@@ -0,0 +1,58 @@
|
||||
package migrations
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
"github.com/knadh/koanf/v2"
|
||||
"github.com/knadh/stuffbin"
|
||||
)
|
||||
|
||||
func V6_0_0(db *sqlx.DB, fs stuffbin.FileSystem, ko *koanf.Koanf, lo *log.Logger) error {
|
||||
_, err := db.Exec(`
|
||||
INSERT INTO settings (key, value, updated_at) VALUES ('security.cors_origins', '[]', NOW()) ON CONFLICT (key) DO NOTHING
|
||||
`)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Add 2FA fields to users table.
|
||||
_, err = db.Exec(`
|
||||
DO $$ BEGIN
|
||||
-- Create twofa_type enum if it doesn't exist
|
||||
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'twofa_type') THEN
|
||||
CREATE TYPE twofa_type AS ENUM ('none', 'totp');
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
ALTER TABLE users ADD COLUMN IF NOT EXISTS twofa_type twofa_type NOT NULL DEFAULT 'none';
|
||||
ALTER TABLE users ADD COLUMN IF NOT EXISTS twofa_key TEXT NULL;
|
||||
`)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Add status field to lists table.
|
||||
_, err = db.Exec(`
|
||||
DO $$ BEGIN
|
||||
-- Create list_status enum if it doesn't exist
|
||||
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'list_status') THEN
|
||||
CREATE TYPE list_status AS ENUM ('active', 'archived');
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
ALTER TABLE lists ADD COLUMN IF NOT EXISTS status list_status NOT NULL DEFAULT 'active';
|
||||
CREATE INDEX IF NOT EXISTS idx_lists_status ON lists(status);
|
||||
`)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Add attribs field to campaigns table.
|
||||
_, err = db.Exec(`ALTER TABLE campaigns ADD COLUMN IF NOT EXISTS attribs JSONB NOT NULL DEFAULT '{}'`)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user