Create enum for user role

This commit is contained in:
araemer 2025-11-30 08:41:13 +01:00
parent 8814658142
commit 7ab5923ebb
7 changed files with 152 additions and 37 deletions

View file

@ -0,0 +1,44 @@
import { MigrationInterface, QueryRunner } from "typeorm";
/**
* Migration to convert role column from varchar to enum
*
* File name should be: TIMESTAMP-ConvertRoleToEnum.ts
* Example: 1701234567890-ConvertRoleToEnum.ts
*
* Place in: src/migrations/
*/
export class ConvertRoleToEnum1701234567890 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`
DO $$ BEGIN
CREATE TYPE user_role_enum AS ENUM ('user', 'admin');
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
`);
await queryRunner.query(`
ALTER TABLE "user"
ALTER COLUMN "role" TYPE user_role_enum
USING "role"::user_role_enum;
`);
await queryRunner.query(`
ALTER TABLE "user"
ALTER COLUMN "role" SET DEFAULT 'user';
`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`
ALTER TABLE "user"
ALTER COLUMN "role" TYPE varchar
USING "role"::text;
`);
await queryRunner.query(`
DROP TYPE IF EXISTS user_role_enum;
`);
}
}