From 0b3ead83691c3454dc684239b946469ae1f2deef Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 18 Nov 2021 19:17:51 +0100 Subject: [PATCH] simple seed is working --- database/.env.dist | 4 +++- database/ormconfig.js | 15 +++++++++++++++ database/package.json | 4 +++- database/src/factories/user.factory.ts | 5 +++-- database/src/index.ts | 9 +++++++++ database/src/seeds/create-user.seed.ts | 2 +- 6 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 database/ormconfig.js diff --git a/database/.env.dist b/database/.env.dist index 8488fb1bf..644dcaaf4 100644 --- a/database/.env.dist +++ b/database/.env.dist @@ -4,4 +4,6 @@ DB_USER=root DB_PASSWORD= DB_DATABASE=gradido_community MIGRATIONS_TABLE=migrations -MIGRATIONS_DIRECTORY=./migrations/ \ No newline at end of file +MIGRATIONS_DIRECTORY=./migrations/ + +TYPEORM_SEEDING_FACTORIES=src/factories/**/*{.ts,.js} diff --git a/database/ormconfig.js b/database/ormconfig.js new file mode 100644 index 000000000..71e444061 --- /dev/null +++ b/database/ormconfig.js @@ -0,0 +1,15 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ + +const CONFIG = require('./src/config') + +module.export = { + name: 'default', + type: 'mysql', + host: CONFIG.DB_HOST, + port: CONFIG.DB_PORT, + username: CONFIG.DB_USER, + password: CONFIG.DB_PASSWORD, + database: CONFIG.DB_DATABASE, + seeds: ['src/seeds/**/*{.ts,.js}'], + factories: ['src/factories/**/*{.ts,.js}'], +} diff --git a/database/package.json b/database/package.json index ff238ee13..a84026e6a 100644 --- a/database/package.json +++ b/database/package.json @@ -16,7 +16,9 @@ "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", - "lint": "eslint . --ext .js,.ts" + "lint": "eslint . --ext .js,.ts", + "seed:config": "ts-node ./node_modules/typeorm-seeding/dist/cli.js config", + "seed": "nodemon -w ./ --ext ts --exec ts-node src/index.ts seed" }, "devDependencies": { "@types/faker": "^5.5.9", diff --git a/database/src/factories/user.factory.ts b/database/src/factories/user.factory.ts index 7fbccbdb3..5f9bb420b 100644 --- a/database/src/factories/user.factory.ts +++ b/database/src/factories/user.factory.ts @@ -12,9 +12,10 @@ interface UserContext { disabled?: boolean } -define(User, (faker: typeof Faker, context: UserContext) => { - const user = new User() +define(User, (faker: typeof Faker, context?: UserContext) => { + if (!context) context = {} + const user = new User() user.pubkey = context.pubkey ? context.pubkey : randomBytes(32) user.email = context.email ? context.email : faker.internet.email() user.firstName = context.firstName ? context.firstName : faker.name.firstName() diff --git a/database/src/index.ts b/database/src/index.ts index 2492a1306..9341b3d45 100644 --- a/database/src/index.ts +++ b/database/src/index.ts @@ -4,6 +4,8 @@ import { Migration } from 'ts-mysql-migrate' import CONFIG from './config' import prepare from './prepare' import connection from './typeorm/connection' +import { useSeeding, runSeeder } from 'typeorm-seeding' +import { CreateUserSeed } from './seeds/create-user.seed' const run = async (command: string) => { // Database actions not supported by our migration library @@ -47,6 +49,13 @@ const run = async (command: string) => { case 'reset': await migration.reset() // use for resetting database break + case 'seed': + await useSeeding({ + root: process.cwd(), + configName: 'ormconfig.js', + }) + await runSeeder(CreateUserSeed) + break default: throw new Error(`Unsupported command ${command}`) } diff --git a/database/src/seeds/create-user.seed.ts b/database/src/seeds/create-user.seed.ts index b95d1bbe3..a6de48a0c 100644 --- a/database/src/seeds/create-user.seed.ts +++ b/database/src/seeds/create-user.seed.ts @@ -1,7 +1,7 @@ import { Factory, Seeder } from 'typeorm-seeding' import { User } from '../../entity/User' -export class CreateUser implements Seeder { +export class CreateUserSeed implements Seeder { public async run(factory: Factory): Promise { await factory(User)().create() }