"DROP TYPE market_config_status",
},
},
+ {
+ Version: 201805131000,
+ Up: []string{
+ "CREATE TYPE user_role AS ENUM ('admin', 'user')",
+ "ALTER TABLE users ADD role user_role NOT NULL DEFAULT 'user'",
+ },
+ Down: []string{
+ "ALTER TABLE users DROP COLUMN role",
+ "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",
+ },
+ },
}