From ae8fc914fb1d53f2293fff347a63464f47669a25 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Fri, 26 Nov 2021 12:24:56 +0100 Subject: [PATCH] further refactoring --- database/package.json | 1 - database/src/index.ts | 2 ++ database/src/seeds/helpers/user-helpers.ts | 19 ++++++++++++++ .../seeds/users/peter-lustig.admin.seed.ts | 26 +------------------ 4 files changed, 22 insertions(+), 26 deletions(-) diff --git a/database/package.json b/database/package.json index a84026e6a..bc9fbe961 100644 --- a/database/package.json +++ b/database/package.json @@ -12,7 +12,6 @@ "clean": "tsc --build --clean", "up": "cd build && node src/index.js up", "down": "cd build && node src/index.js down", - "reset": "cd build && node src/index.js reset", "dev_up": "nodemon -w ./ --ext ts --exec ts-node src/index.ts up", "dev_down": "nodemon -w ./ --ext ts --exec ts-node src/index.ts down", "dev_reset": "nodemon -w ./ --ext ts --exec ts-node src/index.ts reset", diff --git a/database/src/index.ts b/database/src/index.ts index f781b09db..f6ca719cc 100644 --- a/database/src/index.ts +++ b/database/src/index.ts @@ -47,9 +47,11 @@ const run = async (command: string) => { await migration.down() // use for downgrade script break case 'reset': + // TODO protect from production await migration.reset() // use for resetting database break case 'seed': + // TODO protect from production await useSeeding({ root: process.cwd(), configName: 'ormconfig.js', diff --git a/database/src/seeds/helpers/user-helpers.ts b/database/src/seeds/helpers/user-helpers.ts index 2474b1241..805104519 100644 --- a/database/src/seeds/helpers/user-helpers.ts +++ b/database/src/seeds/helpers/user-helpers.ts @@ -6,7 +6,26 @@ import { LoginUserRolesContext, } from '../../interface/UserContext' import { UserInterface } from '../../interface/UserInterface' +import { User } from '../../../entity/User' import { LoginUser } from '../../../entity/LoginUser' +import { LoginUserBackup } from '../../../entity/LoginUserBackup' +import { ServerUser } from '../../../entity/ServerUser' +import { LoginUserRoles } from '../../../entity/LoginUserRoles' +import { Factory } from 'typeorm-seeding' + +export const userSeeder = async (factory: Factory, userData: UserInterface): Promise => { + await factory(User)(createUserContext(userData)).create() + const loginUser = await factory(LoginUser)(createLoginUserContext(userData)).create() + await factory(LoginUserBackup)(createLoginUserBackupContext(userData, loginUser)).create() + + if (userData.isAdmin) { + await factory(ServerUser)(createServerUserContext(userData)).create() + + // This is crazy: we just need the relation to roleId but no role at all + // It works with LoginRoles empty!! + await factory(LoginUserRoles)(createLoginUserRolesContext(loginUser)).create() + } +} export const createUserContext = (context: UserInterface): UserContext => { return { diff --git a/database/src/seeds/users/peter-lustig.admin.seed.ts b/database/src/seeds/users/peter-lustig.admin.seed.ts index a8d17a6e4..49cbab072 100644 --- a/database/src/seeds/users/peter-lustig.admin.seed.ts +++ b/database/src/seeds/users/peter-lustig.admin.seed.ts @@ -1,32 +1,8 @@ import { Factory, Seeder } from 'typeorm-seeding' -import { User } from '../../../entity/User' -import { LoginUser } from '../../../entity/LoginUser' -import { LoginUserBackup } from '../../../entity/LoginUserBackup' -import { ServerUser } from '../../../entity/ServerUser' -import { LoginUserRoles } from '../../../entity/LoginUserRoles' -import { - createUserContext, - createLoginUserContext, - createLoginUserBackupContext, - createServerUserContext, - createLoginUserRolesContext, -} from '../helpers/user-helpers' import { peterLustig } from './peter-lustig' -const userData = peterLustig - export class CreatePeterLustigSeed implements Seeder { public async run(factory: Factory): Promise { - await factory(User)(createUserContext(userData)).create() - const loginUser = await factory(LoginUser)(createLoginUserContext(userData)).create() - await factory(LoginUserBackup)(createLoginUserBackupContext(userData, loginUser)).create() - - if (userData.isAdmin) { - await factory(ServerUser)(createServerUserContext(userData)).create() - - // This is crazy: we just need the relation to roleId but no role at all - // It works with LoginRoles empty!! - await factory(LoginUserRoles)(createLoginUserRolesContext(loginUser)).create() - } + await userSeeder(factory, peterLustig) } }