diff --git a/database/entity/0001-init_db/Balance.ts b/database/entity/0001-init_db/Balance.ts index e0c1b7bd0..1a7050daf 100644 --- a/database/entity/0001-init_db/Balance.ts +++ b/database/entity/0001-init_db/Balance.ts @@ -19,6 +19,6 @@ export class Balance extends BaseEntity { amount: number @OneToOne(() => User, { nullable: false }) - @JoinColumn({ name: 'user_id' }) + @JoinColumn({ name: 'state_user_id' }) user: User } diff --git a/database/src/factories/balance.factory.ts b/database/src/factories/balance.factory.ts new file mode 100644 index 000000000..2c344be99 --- /dev/null +++ b/database/src/factories/balance.factory.ts @@ -0,0 +1,18 @@ +import Faker from 'faker' +import { define } from 'typeorm-seeding' +import { Balance } from '../../entity/Balance' +import { BalanceContext } from '../interface/TransactionContext' + +define(Balance, (faker: typeof Faker, context?: BalanceContext) => { + if (!context || !context.user) { + throw new Error('Balance: No user present!') + } + + const balance = new Balance() + balance.modified = context.modified ? context.modified : faker.date.recent() + balance.recordDate = context.recordDate ? context.recordDate : faker.date.recent() + balance.amount = context.amount ? context.amount : 10000000 + balance.user = context.user + + return balance +}) diff --git a/database/src/index.ts b/database/src/index.ts index 28b54cccc..94566c9f5 100644 --- a/database/src/index.ts +++ b/database/src/index.ts @@ -60,11 +60,11 @@ const run = async (command: string) => { root: process.cwd(), configName: 'ormconfig.js', }) + await runSeeder(DecayStartBlockSeed) await runSeeder(CreatePeterLustigSeed) await runSeeder(CreateBibiBloxbergSeed) await runSeeder(CreateRaeuberHotzenplotzSeed) await runSeeder(CreateBobBaumeisterSeed) - await runSeeder(DecayStartBlockSeed) break default: throw new Error(`Unsupported command ${command}`) diff --git a/database/src/interface/UserInterface.ts b/database/src/interface/UserInterface.ts index 942158593..33919fb74 100644 --- a/database/src/interface/UserInterface.ts +++ b/database/src/interface/UserInterface.ts @@ -27,4 +27,10 @@ export interface UserInterface { modified?: Date // flag for admin isAdmin?: boolean + // flag for balance + addBalance?: boolean + // balance + balanceModified?: Date + recordDate?: Date + amount?: number } diff --git a/database/src/seeds/helpers/user-helpers.ts b/database/src/seeds/helpers/user-helpers.ts index 805104519..79068c2ec 100644 --- a/database/src/seeds/helpers/user-helpers.ts +++ b/database/src/seeds/helpers/user-helpers.ts @@ -5,16 +5,18 @@ import { ServerUserContext, LoginUserRolesContext, } from '../../interface/UserContext' +import { BalanceContext } from '../../interface/TransactionContext' 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 { Balance } from '../../../entity/Balance' import { Factory } from 'typeorm-seeding' export const userSeeder = async (factory: Factory, userData: UserInterface): Promise => { - await factory(User)(createUserContext(userData)).create() + const user = await factory(User)(createUserContext(userData)).create() const loginUser = await factory(LoginUser)(createLoginUserContext(userData)).create() await factory(LoginUserBackup)(createLoginUserBackupContext(userData, loginUser)).create() @@ -25,9 +27,13 @@ export const userSeeder = async (factory: Factory, userData: UserInterface): Pro // It works with LoginRoles empty!! await factory(LoginUserRoles)(createLoginUserRolesContext(loginUser)).create() } + + if (userData.addBalance) { + await factory(Balance)(createBalanceContext(userData, user)).create() + } } -export const createUserContext = (context: UserInterface): UserContext => { +const createUserContext = (context: UserInterface): UserContext => { return { pubkey: context.pubKey, email: context.email, @@ -38,7 +44,7 @@ export const createUserContext = (context: UserInterface): UserContext => { } } -export const createLoginUserContext = (context: UserInterface): LoginUserContext => { +const createLoginUserContext = (context: UserInterface): LoginUserContext => { return { email: context.email, firstName: context.firstName, @@ -59,7 +65,7 @@ export const createLoginUserContext = (context: UserInterface): LoginUserContext } } -export const createLoginUserBackupContext = ( +const createLoginUserBackupContext = ( context: UserInterface, loginUser: LoginUser, ): LoginUserBackupContext => { @@ -70,7 +76,7 @@ export const createLoginUserBackupContext = ( } } -export const createServerUserContext = (context: UserInterface): ServerUserContext => { +const createServerUserContext = (context: UserInterface): ServerUserContext => { return { role: context.role, username: context.username, @@ -83,9 +89,18 @@ export const createServerUserContext = (context: UserInterface): ServerUserConte } } -export const createLoginUserRolesContext = (loginUser: LoginUser): LoginUserRolesContext => { +const createLoginUserRolesContext = (loginUser: LoginUser): LoginUserRolesContext => { return { userId: loginUser.id, roleId: 1, } } + +const createBalanceContext = (context: UserInterface, user: User): BalanceContext => { + return { + modified: context.balanceModified, + recordDate: context.recordDate, + amount: context.amount, + user, + } +} diff --git a/database/src/seeds/users/bibi-bloxberg.ts b/database/src/seeds/users/bibi-bloxberg.ts index d87e3eb4a..3fc9274b9 100644 --- a/database/src/seeds/users/bibi-bloxberg.ts +++ b/database/src/seeds/users/bibi-bloxberg.ts @@ -22,4 +22,8 @@ export const bibiBloxberg = { 'knife normal level all hurdle crucial color avoid warrior stadium road bachelor affair topple hawk pottery right afford immune two ceiling budget glance hour ', mnemonicType: 2, isAdmin: false, + addBalance: true, + balanceModified: new Date('2021-11-30T10:37:11'), + recordDate: new Date('2021-11-30T10:37:11'), + amount: 10000000, } diff --git a/database/src/seeds/users/bob-baumeister.ts b/database/src/seeds/users/bob-baumeister.ts index 33ce35656..bc9bdbbc1 100644 --- a/database/src/seeds/users/bob-baumeister.ts +++ b/database/src/seeds/users/bob-baumeister.ts @@ -22,4 +22,8 @@ export const bobBaumeister = { 'detail master source effort unable waste tilt flush domain orchard art truck hint barrel response gate impose peanut secret merry three uncle wink resource ', mnemonicType: 2, isAdmin: false, + addBalance: true, + balanceModified: new Date('2021-11-30T10:37:14'), + recordDate: new Date('2021-11-30T10:37:14'), + amount: 10000000, } diff --git a/database/src/seeds/users/raeuber-hotzenplotz.ts b/database/src/seeds/users/raeuber-hotzenplotz.ts index 10fcf8af1..b1a6cc6b0 100644 --- a/database/src/seeds/users/raeuber-hotzenplotz.ts +++ b/database/src/seeds/users/raeuber-hotzenplotz.ts @@ -22,4 +22,8 @@ export const raeuberHotzenplotz = { 'gospel trip tenant mouse spider skill auto curious man video chief response same little over expire drum display fancy clinic keen throw urge basket ', mnemonicType: 2, isAdmin: false, + addBalance: true, + balanceModified: new Date('2021-11-30T10:37:13'), + recordDate: new Date('2021-11-30T10:37:13'), + amount: 10000000, }