From 09decd5600e415491f5a50e078b3487f099542f4 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Thu, 10 Dec 2020 20:26:46 +0100 Subject: [PATCH 1/3] Added first demo seed ref #19 --- ormconfig.ts | 3 ++- package.json | 3 ++- src/seeds/SeedUsers.ts | 20 ++++++++++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 src/seeds/SeedUsers.ts diff --git a/ormconfig.ts b/ormconfig.ts index bf9be07..aa5f916 100644 --- a/ormconfig.ts +++ b/ormconfig.ts @@ -8,5 +8,6 @@ export default { username: process.env.DB_USER, password: process.env.DB_PASSWORD, database: process.env.DB_NAME, - entities: ["src/models/entities/*.ts"] + entities: ["src/models/entities/*.ts"], + seeds: ['src/seeds/*.ts'], }; diff --git a/package.json b/package.json index baae298..9a18f99 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "swagger-ui-express": "^4.1.5", "typeorm": "^0.2.29", "typeorm-routing-controllers-extensions": "^0.2.0", + "typeorm-seeding": "^1.6.1", "uuid": "^8.3.1" }, "devDependencies": { @@ -64,4 +65,4 @@ "build": "tsc", "docs": "typedoc --out docs src" } -} \ No newline at end of file +} diff --git a/src/seeds/SeedUsers.ts b/src/seeds/SeedUsers.ts new file mode 100644 index 0000000..9db0fd7 --- /dev/null +++ b/src/seeds/SeedUsers.ts @@ -0,0 +1,20 @@ +import { Connection } from 'typeorm'; +import { Factory, Seeder } from 'typeorm-seeding'; +import { CreateUser } from '../models/actions/CreateUser'; +import { User } from '../models/entities/User'; + +export default class SeedUsers implements Seeder { + public async run(factory: Factory, connection: Connection): Promise { + let initialUser = new CreateUser(); + initialUser.firstname = "demo"; + initialUser.lastname = "demo"; + initialUser.username = "demo"; + initialUser.password = "demo"; + await connection + .createQueryBuilder() + .insert() + .into(User) + .values([await initialUser.toUser()]) + .execute() + } +} \ No newline at end of file From effa79032bb4dbacaf75a74646130424b21d9767 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 11 Dec 2020 19:14:48 +0100 Subject: [PATCH 2/3] Added seed yarn script ref #19 --- package.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 9a18f99..7ba0e96 100644 --- a/package.json +++ b/package.json @@ -63,6 +63,7 @@ "scripts": { "dev": "nodemon src/app.ts", "build": "tsc", - "docs": "typedoc --out docs src" + "docs": "typedoc --out docs src", + "seed": "ts-node ./node_modules/typeorm-seeding/dist/cli.js seed" } -} +} \ No newline at end of file From 473033aa50191bca7518fc842c6d550c72600304 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 11 Dec 2020 19:29:23 +0100 Subject: [PATCH 3/3] User seeding now automaticly runs if no users are detected ref #19 --- src/loaders/database.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/loaders/database.ts b/src/loaders/database.ts index ee331ae..806b286 100644 --- a/src/loaders/database.ts +++ b/src/loaders/database.ts @@ -1,10 +1,15 @@ import { createConnection } from "typeorm"; - +import { runSeeder } from 'typeorm-seeding'; +import { User } from '../models/entities/User'; +import SeedUsers from '../seeds/SeedUsers'; /** * Loader for the database that creates the database connection and initializes the database tabels. */ export default async () => { const connection = await createConnection(); - connection.synchronize(); + await connection.synchronize(); + if (await connection.getRepository(User).count() === 0) { + await runSeeder(SeedUsers); + } return connection; }; \ No newline at end of file