]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git/blobdiff - db/migrations.go
Databse migrations.
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git] / db / migrations.go
diff --git a/db/migrations.go b/db/migrations.go
new file mode 100644 (file)
index 0000000..ce5caf6
--- /dev/null
@@ -0,0 +1,41 @@
+package db
+
+type Migration struct {
+       Version int64
+       Up      []string
+       Down    []string
+}
+
+var migrations []Migration = []Migration{
+       {
+               Version: 1,
+               Up: []string{
+                       `CREATE TABLE users (
+                               id            BIGSERIAL PRIMARY KEY,
+                               email         text NOT NULL,
+                               password_hash text NOT NULL,
+                               otp_secret    text,
+                               is_otp_setup  boolean,
+                               status        smallint,
+                               UNIQUE(email)
+                       )`,
+                       `CREATE TABLE market_configs (
+                               id          BIGSERIAL PRIMARY KEY,
+                               market_name text NOT NULL,
+                               user_id     bigint NOT NULL REFERENCES users(id),
+                               config      jsonb,
+                               UNIQUE(user_id, market_name)
+                       )`,
+                       `CREATE TABLE report_lines (
+                               id        BIGSERIAL PRIMARY KEY,
+                               date      timestamp with time zone NOT NULL,
+                               report_id bigint NOT NULL,
+                               type      text,
+                               payload   jsonb
+                       )`,
+                       "CREATE INDEX IF NOT EXISTS report_lines_report_id ON report_lines (report_id)",
+                       "CREATE INDEX IF NOT EXISTS report_lines_type      ON report_lines (type)",
+               },
+               Down: []string{"DROP TABLE users", "DROP TABLE market_configs", "DROP TABLE report_lines"},
+       },
+}