summaryrefslogtreecommitdiff
path: root/server/database
diff options
context:
space:
mode:
authorJoseph Ditton <jditton.atomic@gmail.com>2021-11-30 15:40:07 -0700
committerJoseph Ditton <jditton.atomic@gmail.com>2021-11-30 15:40:07 -0700
commit694f2318bd2eaf526d8714c56774022a15beae04 (patch)
treeedaed14ca7d7a52e8a7a8bcdb7483d1a34bd334a /server/database
parent8d0b32f8dfe45291426e58f6bf20cffac8dab6e7 (diff)
downloadlocchat-694f2318bd2eaf526d8714c56774022a15beae04.tar.gz
locchat-694f2318bd2eaf526d8714c56774022a15beae04.zip
adds setup for roles
Diffstat (limited to 'server/database')
-rw-r--r--server/database/migrations/1638307700052-AddRoles.ts73
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');
+ }
+}