feat: run all migrations in a transaction (#10966)

Updates coder/customers#365

This PR updates our migration framework to run all migrations in a single transaction. This is the same behavior we had in v1 and ensures that failed migrations don't bring the whole deployment down. If a migration fails now, it will automatically be rolled back to the previous version, allowing the deployment to continue functioning.
This commit is contained in:
Colin Adler
2023-12-01 16:11:10 -06:00
committed by GitHub
parent 60d0aa6930
commit 8e684c8195
109 changed files with 243 additions and 372 deletions
@@ -1 +1,20 @@
ALTER TYPE login_type ADD VALUE IF NOT EXISTS 'token';
CREATE TYPE new_logintype AS ENUM (
'password',
'github',
'oidc',
'token'
);
ALTER TABLE users
ALTER COLUMN login_type DROP DEFAULT,
ALTER COLUMN login_type TYPE new_logintype USING (login_type::text::new_logintype),
ALTER COLUMN login_type SET DEFAULT 'password'::new_logintype;
ALTER TABLE user_links
ALTER COLUMN login_type TYPE new_logintype USING (login_type::text::new_logintype);
ALTER TABLE api_keys
ALTER COLUMN login_type TYPE new_logintype USING (login_type::text::new_logintype);
DROP TYPE login_type;
ALTER TYPE new_logintype RENAME TO login_type;