File tree Expand file tree Collapse file tree 8 files changed +96
-1
lines changed
Projects/BooksLibrary/src Expand file tree Collapse file tree 8 files changed +96
-1
lines changed Original file line number Diff line number Diff line change @@ -44,6 +44,9 @@ export default class Application {
4444 //Connect with database
4545 await Loader . databaseConnector . init ( ) ;
4646
47+ //call the seeder
48+ await Loader . seeder . init ( ) ;
49+
4750 //Set-up middlewares
4851 await this . setupMiddlewares ( ) ;
4952
@@ -58,6 +61,8 @@ export default class Application {
5861 await this . listen ( ) ;
5962 } catch ( error ) {
6063 Logger . instance ( ) . log ( `An error occurred while starting api service. ${ error . message } ` ) ;
64+ // eslint-disable-next-line no-console
65+ console . error ( error ) ;
6166 }
6267 } ;
6368
Original file line number Diff line number Diff line change 1+ import { RoleDto } from 'domain.types/role/role.dto' ;
2+
3+ export interface IRoleRepo {
4+ create ( entity : any ) : Promise < RoleDto > ;
5+
6+ getById ( id : number ) : Promise < RoleDto > ;
7+
8+ getByName ( name : string ) : Promise < RoleDto > ;
9+ }
Original file line number Diff line number Diff line change 1+ import { RoleDto } from 'domain.types/role/role.dto' ;
2+ import Role from '../models/role.model' ;
3+
4+ export class RoleMapper {
5+ static toDto ( role : Role ) : RoleDto {
6+ const dto : RoleDto = {
7+ id : role . id ,
8+ RoleName : role . RoleName ,
9+ } ;
10+
11+ return dto ;
12+ }
13+ }
Original file line number Diff line number Diff line change 1+ import { ApiError } from 'common/api.error' ;
2+ import { Logger } from 'common/logger' ;
3+ import { IRoleRepo } from 'database/repository.interfaces/user.role.repo.interface' ;
4+ import { RoleDto } from 'domain.types/role/role.dto' ;
5+ import { RoleMapper } from '../mapper/user.role.mapper' ;
6+ import Role from '../models/role.model' ;
7+
8+ export class UserRoleRepo implements IRoleRepo {
9+ create = async ( roleEntity : any ) : Promise < RoleDto > => {
10+ try {
11+ const entity = {
12+ RoleName : roleEntity . RoleName ,
13+ } ;
14+ const role : Role = await Role . create ( entity ) ;
15+ const dto = RoleMapper . toDto ( role ) ;
16+ return dto ;
17+ } catch ( error ) {
18+ Logger . instance ( ) . log ( error . message ) ;
19+ throw new ApiError ( 500 , error . message ) ;
20+ }
21+ } ;
22+
23+ getById ( id : number ) : Promise < RoleDto > {
24+ throw new Error ( 'Method not implemented.' ) ;
25+ }
26+
27+ getByName ( name : string ) : Promise < RoleDto > {
28+ throw new Error ( 'Method not implemented.' ) ;
29+ }
30+ }
Original file line number Diff line number Diff line change 11import { DependencyContainer } from 'tsyringe' ;
22import { DatabaseConnector_Sequelize } from './sequelize/database.connector.sequelize' ;
33import { UserRepo } from './sequelize/repositories/user.repo' ;
4+ import { UserRoleRepo } from './sequelize/repositories/user.role.repo' ;
45
56export class SQLInjector {
67 static registerInjections ( container : DependencyContainer ) {
78 container . register ( 'IDatabaseConnector' , DatabaseConnector_Sequelize ) ;
89
910 container . register ( 'IUserRepo' , UserRepo ) ;
11+ container . register ( 'IRoleRepo' , UserRoleRepo ) ;
1012 }
1113}
Original file line number Diff line number Diff line change 11export interface RoleDto {
2- id : number ;
2+ id : string ;
33 RoleName : string ;
44}
Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ import { Logger } from '../common/logger';
44import { Authorizer } from 'auth/authorizer' ;
55import { DatabaseConnector } from 'database/database.connector' ;
66import { Injector } from './injector' ;
7+ import { Seeder } from './seeder' ;
78
89export class Loader {
910 private static _container : DependencyContainer = container ;
@@ -30,6 +31,12 @@ export class Loader {
3031 return Loader . _databaseConnector ;
3132 }
3233
34+ private static _seeder : Seeder = null ;
35+
36+ public static get seeder ( ) {
37+ return Loader . _seeder ;
38+ }
39+
3340 public static init = async ( ) : Promise < boolean > => {
3441 try {
3542 //Register injections here...
@@ -38,6 +45,8 @@ export class Loader {
3845
3946 Loader . _databaseConnector = container . resolve ( DatabaseConnector ) ;
4047
48+ Loader . _seeder = container . resolve ( Seeder ) ;
49+
4150 return true ;
4251 } catch ( error ) {
4352 Logger . instance ( ) . log ( error . message ) ;
Original file line number Diff line number Diff line change 1+ import { Logger } from 'common/logger' ;
2+ import { IRoleRepo } from 'database/repository.interfaces/user.role.repo.interface' ;
3+ import { Roles } from 'domain.types/role/role.types' ;
4+ import { inject , injectable } from 'tsyringe' ;
5+
6+ @injectable ( )
7+ export class Seeder {
8+ constructor ( @inject ( 'IRoleRepo' ) private _roleRepo : IRoleRepo ) { }
9+
10+ public init = async ( ) : Promise < void > => {
11+ try {
12+ await this . seedDefaultRoles ( ) ;
13+ } catch ( error ) {
14+ Logger . instance ( ) . log ( error . message ) ;
15+ }
16+ } ;
17+
18+ seedDefaultRoles = async ( ) => {
19+ await this . _roleRepo . create ( {
20+ RoleName : Roles . Admin ,
21+ } ) ;
22+
23+ await this . _roleRepo . create ( {
24+ RoleName : Roles . User ,
25+ } ) ;
26+ } ;
27+ }
You can’t perform that action at this time.
0 commit comments