diff options
author | Joseph Ditton <jditton.atomic@gmail.com> | 2021-11-30 15:40:07 -0700 |
---|---|---|
committer | Joseph Ditton <jditton.atomic@gmail.com> | 2021-11-30 15:40:07 -0700 |
commit | 694f2318bd2eaf526d8714c56774022a15beae04 (patch) | |
tree | edaed14ca7d7a52e8a7a8bcdb7483d1a34bd334a /server/database | |
parent | 8d0b32f8dfe45291426e58f6bf20cffac8dab6e7 (diff) | |
download | locchat-694f2318bd2eaf526d8714c56774022a15beae04.tar.gz locchat-694f2318bd2eaf526d8714c56774022a15beae04.zip |
adds setup for roles
Diffstat (limited to 'server/database')
-rw-r--r-- | server/database/migrations/1638307700052-AddRoles.ts | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/server/database/migrations/1638307700052-AddRoles.ts b/server/database/migrations/1638307700052-AddRoles.ts new file mode 100644 index 0000000..237fb53 --- /dev/null +++ b/server/database/migrations/1638307700052-AddRoles.ts @@ -0,0 +1,73 @@ +import { MigrationInterface, QueryRunner, Table, TableForeignKey } from 'typeorm'; + +export class AddRoles1638307700052 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise<void> { + await queryRunner.createTable( + new Table({ + name: 'role', + columns: [ + { + name: 'id', + type: 'int', + isPrimary: true, + isGenerated: true, + }, + { + name: 'key', + type: 'text', + isNullable: false, + }, + ], + }), + ); + + await queryRunner.createTable( + new Table({ + name: 'user_role', + columns: [ + { + name: 'id', + type: 'int', + isPrimary: true, + isGenerated: true, + }, + { + name: 'userId', + type: 'int', + isNullable: false, + }, + { + name: 'roleId', + type: 'int', + isNullable: false, + }, + ], + }), + ); + + await queryRunner.createForeignKey( + 'user_role', + new TableForeignKey({ + columnNames: ['userId'], + referencedColumnNames: ['id'], + referencedTableName: 'user', + onDelete: 'CASCADE', + }), + ); + + await queryRunner.createForeignKey( + 'user_role', + new TableForeignKey({ + columnNames: ['roleId'], + referencedColumnNames: ['id'], + referencedTableName: 'role', + onDelete: 'CASCADE', + }), + ); + } + + public async down(queryRunner: QueryRunner): Promise<void> { + await queryRunner.dropTable('user_role'); + await queryRunner.dropTable('role'); + } +} |