Skip to content

Commit 70ada5d

Browse files
committed
feat: add migration to create default user roles
1 parent 6d98f47 commit 70ada5d

File tree

9 files changed

+147
-0
lines changed

9 files changed

+147
-0
lines changed

generators/auth/steps/writing.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,13 @@ module.exports = function() {
123123
payload,
124124
);
125125
}
126+
if (fs.existsSync(`${fullPathToAuthFolder}/src/migrations`)) {
127+
this.fs.copyTpl(
128+
this.templatePath(`${authFolder}/src/migrations`),
129+
this.destinationPath(`${rootFolder}/src/migrations`),
130+
payload,
131+
);
132+
}
126133

127134
// DOCKER
128135
if (answers.wantedDocker.toLowerCase() === 'yes') {
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { MigrationInterface, QueryRunner } from 'typeorm';
2+
3+
import { RolesEnum } from '@decorators/roles.decorator';
4+
5+
export class AddDefaultRoles1656921627596 implements MigrationInterface {
6+
public async up(queryRunner: QueryRunner): Promise<void> {
7+
await queryRunner.manager
8+
.createQueryBuilder()
9+
.insert()
10+
.into('roles')
11+
.values([
12+
{
13+
name: RolesEnum.USER,
14+
},
15+
{
16+
name: RolesEnum.ADMIN,
17+
},
18+
])
19+
.execute();
20+
}
21+
22+
public async down(queryRunner: QueryRunner): Promise<void> {
23+
await queryRunner.manager
24+
.createQueryBuilder()
25+
.delete()
26+
.from('roles')
27+
.where('name IN(:...names)', { names: [RolesEnum.USER, RolesEnum.ADMIN] })
28+
.execute();
29+
}
30+
}

generators/auth/templates/mysql/jwt/src/modules/app/app.module.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ import AppController from './app.controller';
2222
username: cfg.get('MYSQL_ROOT_USER'),
2323
password: cfg.get('MYSQL_PASSWORD'),
2424
entities: ['dist/**/*.entity{.ts,.js}'],
25+
migrations: ['dist/**/migrations/*{.ts,.js}'],
26+
cli: {
27+
migrationsDir: 'src/migrations',
28+
},
29+
migrationsRun: true,
2530
synchronize: true,
2631
}),
2732
inject: [ConfigService],
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { MigrationInterface, QueryRunner } from 'typeorm';
2+
3+
import { RolesEnum } from '@decorators/roles.decorator';
4+
5+
export class AddDefaultRoles1656921627596 implements MigrationInterface {
6+
public async up(queryRunner: QueryRunner): Promise<void> {
7+
await queryRunner.manager
8+
.createQueryBuilder()
9+
.insert()
10+
.into('roles')
11+
.values([
12+
{
13+
name: RolesEnum.USER,
14+
},
15+
{
16+
name: RolesEnum.ADMIN,
17+
},
18+
])
19+
.execute();
20+
}
21+
22+
public async down(queryRunner: QueryRunner): Promise<void> {
23+
await queryRunner.manager
24+
.createQueryBuilder()
25+
.delete()
26+
.from('roles')
27+
.where('name IN(:...names)', { names: [RolesEnum.USER, RolesEnum.ADMIN] })
28+
.execute();
29+
}
30+
}

generators/auth/templates/mysql/oauth2/src/modules/app/app.module.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ import V1Module from '../v1/v1.module';
2020
username: cfg.get('MYSQL_ROOT_USER'),
2121
password: cfg.get('MYSQL_PASSWORD'),
2222
entities: ['dist/**/*.entity{.ts,.js}'],
23+
migrations: ['dist/**/migrations/*{.ts,.js}'],
24+
cli: {
25+
migrationsDir: 'src/migrations',
26+
},
27+
migrationsRun: true,
2328
synchronize: true,
2429
}),
2530
inject: [ConfigService],
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { MigrationInterface, QueryRunner } from 'typeorm';
2+
3+
import { RolesEnum } from '@decorators/roles.decorator';
4+
5+
export class AddDefaultRoles1656921627596 implements MigrationInterface {
6+
public async up(queryRunner: QueryRunner): Promise<void> {
7+
await queryRunner.manager
8+
.createQueryBuilder()
9+
.insert()
10+
.into('roles')
11+
.values([
12+
{
13+
name: RolesEnum.USER,
14+
},
15+
{
16+
name: RolesEnum.ADMIN,
17+
},
18+
])
19+
.execute();
20+
}
21+
22+
public async down(queryRunner: QueryRunner): Promise<void> {
23+
await queryRunner.manager
24+
.createQueryBuilder()
25+
.delete()
26+
.from('roles')
27+
.where('name IN(:...names)', { names: [RolesEnum.USER, RolesEnum.ADMIN] })
28+
.execute();
29+
}
30+
}

generators/auth/templates/mysql/passportLocal/src/modules/app/app.module.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ import AppService from './app.service';
2121
username: cfg.get('MYSQL_ROOT_USER'),
2222
password: cfg.get('MYSQL_PASSWORD'),
2323
entities: ['dist/**/*.entity{.ts,.js}'],
24+
migrations: ['dist/**/migrations/*{.ts,.js}'],
25+
cli: {
26+
migrationsDir: 'src/migrations',
27+
},
28+
migrationsRun: true,
2429
synchronize: true,
2530
}),
2631
inject: [ConfigService],
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { MigrationInterface, QueryRunner } from 'typeorm';
2+
3+
import { RolesEnum } from '@decorators/roles.decorator';
4+
5+
export class AddDefaultRoles1656921627596 implements MigrationInterface {
6+
public async up(queryRunner: QueryRunner): Promise<void> {
7+
await queryRunner.manager
8+
.createQueryBuilder()
9+
.insert()
10+
.into('roles')
11+
.values([
12+
{
13+
name: RolesEnum.USER,
14+
},
15+
{
16+
name: RolesEnum.ADMIN,
17+
},
18+
])
19+
.execute();
20+
}
21+
22+
public async down(queryRunner: QueryRunner): Promise<void> {
23+
await queryRunner.manager
24+
.createQueryBuilder()
25+
.delete()
26+
.from('roles')
27+
.where('name IN(:...names)', { names: [RolesEnum.USER, RolesEnum.ADMIN] })
28+
.execute();
29+
}
30+
}

generators/auth/templates/postgresql/jwt/src/modules/app/app.module.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ import AppController from './app.controller';
2121
username: cfg.get('POSTGRESQL_ROOT_USER'),
2222
password: cfg.get('POSTGRESQL_PASSWORD'),
2323
entities: ['dist/**/*.entity{.ts,.js}'],
24+
migrations: ['dist/**/migrations/*{.ts,.js}'],
25+
cli: {
26+
migrationsDir: 'src/migrations',
27+
},
28+
migrationsRun: true,
2429
synchronize: true,
2530
}),
2631
inject: [ConfigService],

0 commit comments

Comments
 (0)