]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git/blobdiff - db/migrations.go
Add sell_strategy to bot_settings.
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git] / db / migrations.go
index e8fc40d12762934caa1222995879a0ab2f973b3c..7576668ba1acc98c04f64562dd53d56c9f240b13 100644 (file)
@@ -100,4 +100,76 @@ var migrations []Migration = []Migration{
                        "DROP TYPE user_role",
                },
        },
+       {
+               Version: 201807311000,
+               Up: []string{
+                       "CREATE TYPE portfolio_profile AS ENUM ('high-liquidity', 'medium-liquidity')",
+                       `CREATE TABLE bot_settings (
+                               id                BIGSERIAL PRIMARY KEY,
+                               user_id           bigint REFERENCES users(id) ON DELETE CASCADE,
+                               portfolio_profile portfolio_profile
+                       )`,
+                       `CREATE INDEX IF NOT EXISTS bot_settings_user_id ON bot_settings (user_id)`,
+                       `CREATE UNIQUE INDEX bot_settings_unique_null_user_id ON bot_settings (coalesce(user_id, 0))`,
+               },
+               Down: []string{
+                       "DROP TABLE bot_settings",
+                       "DROP TYPE portfolio_profile",
+               },
+       },
+       {
+               Version: 201808031000,
+               Up: []string{
+                       `CREATE VIEW market_configs_augmented AS
+                               SELECT market_configs.*,
+                                       COALESCE(u.portfolio_profile, g.portfolio_profile)
+                                               AS portfolio_profile
+                               FROM market_configs
+                                       LEFT JOIN bot_settings AS u
+                                               ON u.user_id = market_configs.user_id,
+                                       (
+                                               SELECT portfolio_profile
+                                                       FROM bot_settings
+                                                       WHERE user_id IS NULL
+                                       ) AS g`,
+               },
+               Down: []string{
+                       "DROP VIEW market_configs_augmented",
+               },
+       },
+       {
+               Version: 201808041000,
+               Up: []string{
+                       "CREATE TYPE sell_strategy AS ENUM ('sell-needed', 'sell-all')",
+                       "ALTER TABLE bot_settings ADD sell_strategy sell_strategy",
+                       `CREATE OR REPLACE VIEW market_configs_augmented AS
+                               SELECT market_configs.*,
+                                       COALESCE(u.portfolio_profile, g.portfolio_profile) AS portfolio_profile,
+                                       COALESCE(u.sell_strategy, g.sell_strategy) AS sell_strategy
+                               FROM market_configs
+                                       LEFT JOIN bot_settings AS u
+                                               ON u.user_id = market_configs.user_id,
+                                       (
+                                               SELECT portfolio_profile, sell_strategy
+                                                       FROM bot_settings
+                                                       WHERE user_id IS NULL
+                                       ) AS g`,
+               },
+               Down: []string{
+                       `CREATE OR REPLACE VIEW market_configs_augmented AS
+                               SELECT market_configs.*,
+                                       COALESCE(u.portfolio_profile, g.portfolio_profile)
+                                               AS portfolio_profile
+                               FROM market_configs
+                                       LEFT JOIN bot_settings AS u
+                                               ON u.user_id = market_configs.user_id,
+                                       (
+                                               SELECT portfolio_profile
+                                                       FROM bot_settings
+                                                       WHERE user_id IS NULL
+                                       ) AS g`,
+                       "ALTER TABLE bot_setttings DROP COLUMN sell_strategy",
+                       "DROP TYPE sell_strategy",
+               },
+       },
 }