diff --git a/db/migrations/001_create_enum_Rating_2024_06_04.sql b/db/migrations/001_create_enum_Rating_2024_06_04.sql new file mode 100644 index 0000000..0af65ae --- /dev/null +++ b/db/migrations/001_create_enum_Rating_2024_06_04.sql @@ -0,0 +1,9 @@ +-- +migrate Up +CREATE TYPE Rating AS ENUM ( + 'safe', + 'questionable', + 'explicit' + ); + +-- +migrate Down +DROP TYPE Rating; diff --git a/db/migrations/002_create_enum_TagType_2024_06_04.sql b/db/migrations/002_create_enum_TagType_2024_06_04.sql new file mode 100644 index 0000000..0a95264 --- /dev/null +++ b/db/migrations/002_create_enum_TagType_2024_06_04.sql @@ -0,0 +1,13 @@ +-- +migrate Up +CREATE TYPE TagType AS ENUM ( + 'general', + 'species', + 'character', + 'artist', + 'lore', + 'meta', + 'invalid' + ); + +-- +migrate Down +DROP TYPE TagType; diff --git a/db/migrations/003_create_table_Post_2024_06_04.sql b/db/migrations/003_create_table_Post_2024_06_04.sql new file mode 100644 index 0000000..11957e1 --- /dev/null +++ b/db/migrations/003_create_table_Post_2024_06_04.sql @@ -0,0 +1,10 @@ +-- +migrate Up +CREATE TABLE "Post" +( + id VARCHAR(25) PRIMARY KEY, + rating Rating, + created_at TIMESTAMP +); + +-- +migrate Down +DROP TYPE Post; diff --git a/db/migrations/004_create_table_Source_2024_06_04.sql b/db/migrations/004_create_table_Source_2024_06_04.sql new file mode 100644 index 0000000..c52015f --- /dev/null +++ b/db/migrations/004_create_table_Source_2024_06_04.sql @@ -0,0 +1,11 @@ +-- +migrate Up +CREATE TABLE "Source" +( + id VARCHAR(25) PRIMARY KEY, + display_name TEXT, + domain TEXT NOT NULL UNIQUE +); + + +-- +migrate Down +DROP TABLE "Source"; \ No newline at end of file diff --git a/db/migrations/005_create_table_Tag_2024_06_04.sql b/db/migrations/005_create_table_Tag_2024_06_04.sql new file mode 100644 index 0000000..9b25afe --- /dev/null +++ b/db/migrations/005_create_table_Tag_2024_06_04.sql @@ -0,0 +1,9 @@ +-- +migrate Up +CREATE TABLE "Tag" +( + name TEXT PRIMARY KEY, + type TagType +); + +-- +migrate Down +DROP TABLE "Tag"; \ No newline at end of file diff --git a/db/migrations/006_create_table_User_2024_06_04.sql b/db/migrations/006_create_table_User_2024_06_04.sql new file mode 100644 index 0000000..56216f8 --- /dev/null +++ b/db/migrations/006_create_table_User_2024_06_04.sql @@ -0,0 +1,9 @@ +-- +migrate Up +CREATE TABLE "User" +( + id TEXT PRIMARY KEY, + created_at TIMESTAMP +); + +-- +migrate Down +DROP TABLE "User"; \ No newline at end of file diff --git a/db/migrations/007_create_table_PostReference_2024_06_04.sql b/db/migrations/007_create_table_PostReference_2024_06_04.sql new file mode 100644 index 0000000..f0001e7 --- /dev/null +++ b/db/migrations/007_create_table_PostReference_2024_06_04.sql @@ -0,0 +1,12 @@ +-- +migrate Up +CREATE TABLE "PostReference" +( + post_id TEXT REFERENCES "Post" (id), + source_id TEXT REFERENCES "Source" (id), + url TEXT NOT NULL UNIQUE, + source_post_id TEXT, + PRIMARY KEY (post_id, source_id) +); + +-- +migrate Down +DROP TABLE "PostReference"; \ No newline at end of file diff --git a/db/migrations/008_create_table_TagAlias_2024_06_04.sql b/db/migrations/008_create_table_TagAlias_2024_06_04.sql new file mode 100644 index 0000000..6e69fad --- /dev/null +++ b/db/migrations/008_create_table_TagAlias_2024_06_04.sql @@ -0,0 +1,8 @@ +-- +migrate Up +CREATE TABLE "TagAlias" +( + name TEXT PRIMARY KEY, + tag_id TEXT REFERENCES "Tag" (name) +); +-- +migrate Down +DROP TABLE "TagAlias"; \ No newline at end of file diff --git a/db/migrations/009_create_table_TagGroup_2024_06_04.sql b/db/migrations/009_create_table_TagGroup_2024_06_04.sql new file mode 100644 index 0000000..da305cd --- /dev/null +++ b/db/migrations/009_create_table_TagGroup_2024_06_04.sql @@ -0,0 +1,9 @@ +-- +migrate Up +CREATE TABLE "TagGroup" +( + name TEXT PRIMARY KEY, + tag_id TEXT REFERENCES "Tag" (name) +); + +-- +migrate Down +DROP TABLE "TagGroup"; \ No newline at end of file diff --git a/db/migrations/010_create_table_UserFavorite_2024_06_04.sql b/db/migrations/010_create_table_UserFavorite_2024_06_04.sql new file mode 100644 index 0000000..2058ab1 --- /dev/null +++ b/db/migrations/010_create_table_UserFavorite_2024_06_04.sql @@ -0,0 +1,11 @@ +-- +migrate Up +CREATE TABLE "UserFavorites" +( + user_id TEXT REFERENCES "User" (id), + post_id TEXT REFERENCES "Post" (id), + created_at TIMESTAMP, + PRIMARY KEY (user_id, post_id) +); + +-- +migrate Down +DROP TABLE "UserFavorites"; \ No newline at end of file diff --git a/db/migrations/011_create_table_UserSource_2024_06_04.sql b/db/migrations/011_create_table_UserSource_2024_06_04.sql new file mode 100644 index 0000000..8ba7201 --- /dev/null +++ b/db/migrations/011_create_table_UserSource_2024_06_04.sql @@ -0,0 +1,13 @@ +-- +migrate Up +CREATE TABLE "UserSource" +( + user_id TEXT REFERENCES "User" (id), + source_id TEXT REFERENCES "Source" (id), + account_username TEXT, + account_id TEXT, + PRIMARY KEY (user_id, source_id) +); + + +-- +migrate Down +DROP TABLE "UserSource"; \ No newline at end of file diff --git a/pkg/database/postgres.go b/pkg/database/postgres.go index f151503..77870f4 100644 --- a/pkg/database/postgres.go +++ b/pkg/database/postgres.go @@ -25,16 +25,15 @@ func NewPostgresqlConnection() OtterSpace { } func (p postgresqlConnection) Connect(ctx context.Context, endpoint string, username string, password string, database string, port int, ssl string, timezone string) error { - dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%d sslmode=%s TimeZone=%s", endpoint, username, password, database, port, ssl, timezone) - db, err := gorm.Open(gormPostgres.Open(dsn), &gorm.Config{}) - p.db = db + var err error + + err = p.migrateDatabase(dsn) if err != nil { return err } - err = p.migrateDatabase(dsn) - + p.db, err = gorm.Open(gormPostgres.Open(dsn), &gorm.Config{}) if err != nil { return err }