Create enum for user role
This commit is contained in:
parent
8814658142
commit
7ab5923ebb
7 changed files with 152 additions and 37 deletions
44
src/migrations/1701234567890-ConvertRoleToEnum.ts
Normal file
44
src/migrations/1701234567890-ConvertRoleToEnum.ts
Normal 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;
|
||||
`);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue