From cefff6d5c7415fd477f67c7cf7d68951249ff4ff Mon Sep 17 00:00:00 2001 From: ashar Date: Tue, 4 Jun 2024 15:54:16 +0700 Subject: [PATCH] feat(seeder) seeder data user privilege --- package.json | 5 +++- .../1717475321-user-privilege.seed.ts | 9 +++++++ .../factories/user-privilege.factory.ts | 26 +++++++++++++++++++ src/database/seed-data-ormconfig.ts | 13 ++++++++++ .../seeds/1717469402-default-admin.seed.ts | 5 +--- .../auth/infrastructure/dto/login.dto.ts | 4 +-- yarn.lock | 5 ++++ 7 files changed, 60 insertions(+), 7 deletions(-) create mode 100644 src/database/data-seeds/1717475321-user-privilege.seed.ts create mode 100644 src/database/factories/user-privilege.factory.ts create mode 100644 src/database/seed-data-ormconfig.ts diff --git a/package.json b/package.json index 131bb02..f857b7a 100644 --- a/package.json +++ b/package.json @@ -21,9 +21,12 @@ "orm": "ts-node --project ./tsconfig.json -r tsconfig-paths/register ./node_modules/typeorm/cli.js -d ./src/database/ormconfig.ts", "migration:execute": "yarn run orm migration:run", "seed:config": "ts-node -r tsconfig-paths/register ./node_modules/typeorm-seeding/dist/cli.js -n ./src/database/seed-ormconfig.ts config", - "seed:run": "ts-node -r tsconfig-paths/register ./node_modules/typeorm-seeding/dist/cli.js -n ./src/database/seed-ormconfig.ts seed" + "seed:run": "ts-node -r tsconfig-paths/register ./node_modules/typeorm-seeding/dist/cli.js -n ./src/database/seed-ormconfig.ts seed", + "factory:config": "ts-node -r tsconfig-paths/register ./node_modules/typeorm-seeding/dist/cli.js -n ./src/database/seed-data-ormconfig.ts config", + "factory:run": "ts-node -r tsconfig-paths/register ./node_modules/typeorm-seeding/dist/cli.js -n ./src/database/seed-data-ormconfig.ts seed" }, "dependencies": { + "@faker-js/faker": "^8.4.1", "@nestjs/common": "^10.0.0", "@nestjs/config": "^3.2.2", "@nestjs/core": "^10.0.0", diff --git a/src/database/data-seeds/1717475321-user-privilege.seed.ts b/src/database/data-seeds/1717475321-user-privilege.seed.ts new file mode 100644 index 0000000..3b7e303 --- /dev/null +++ b/src/database/data-seeds/1717475321-user-privilege.seed.ts @@ -0,0 +1,9 @@ +import { UserPrivilegeModel } from 'src/modules/user-related/user-privilege/data/models/user-privilege.model'; +import { Connection } from 'typeorm'; +import { Factory, Seeder } from 'typeorm-seeding'; + +export class SeedUserPrivilege implements Seeder { + public async run(factory: Factory, connection: Connection): Promise { + await factory(UserPrivilegeModel)().createMany(100); + } +} diff --git a/src/database/factories/user-privilege.factory.ts b/src/database/factories/user-privilege.factory.ts new file mode 100644 index 0000000..4d14c80 --- /dev/null +++ b/src/database/factories/user-privilege.factory.ts @@ -0,0 +1,26 @@ +import { faker } from '@faker-js/faker'; +import { UserPrivilegeModel } from 'src/modules/user-related/user-privilege/data/models/user-privilege.model'; +import { UserPrivilegeConfigurationHelper } from 'src/modules/user-related/user-privilege/domain/usecases/user-privilege-configuration/helpers/generate-user-privilege-configuration.helper'; +import { define } from 'typeorm-seeding'; + +define(UserPrivilegeModel, () => { + const created_at = new Date( + faker.date.between({ + from: '2020-01-01T00:00:00.000Z', + to: '2030-01-01T00:00:00.000Z', + }), + ).getTime(); + + const configs = UserPrivilegeConfigurationHelper.createConfigurations(); + + const data = new UserPrivilegeModel(); + data.name = faker.person.jobType(); + data.created_at = created_at; + data.updated_at = created_at; + + Object.assign(data, { + user_privilege_configurations: configs, + }); + + return data; +}); diff --git a/src/database/seed-data-ormconfig.ts b/src/database/seed-data-ormconfig.ts new file mode 100644 index 0000000..c8a0739 --- /dev/null +++ b/src/database/seed-data-ormconfig.ts @@ -0,0 +1,13 @@ +module.exports = { + type: 'postgres', + host: process.env.DEFAULT_DB_HOST, + port: process.env.DEFAULT_DB_PORT, + username: process.env.DEFAULT_DB_USER, + password: process.env.DEFAULT_DB_PASS, + database: process.env.DEFAULT_DB_NAME, + logging: false, + synchronize: false, + entities: ['src/modules/**/**/data/models/*.ts'], + seeds: ['src/database/data-seeds/**/*{seed.ts,seed.js}'], + factories: ['src/database/factories/**/*{.ts,.js}'], +}; diff --git a/src/database/seeds/1717469402-default-admin.seed.ts b/src/database/seeds/1717469402-default-admin.seed.ts index 8362a88..0317929 100644 --- a/src/database/seeds/1717469402-default-admin.seed.ts +++ b/src/database/seeds/1717469402-default-admin.seed.ts @@ -16,15 +16,12 @@ export class SeedDefaultAdmin implements Seeder { updated_at: new Date().getTime(), }); - console.log(data, 'dsa'); await connection .createQueryBuilder() .insert() .into(UserModel) .values([data]) .execute(); - } catch (error) { - console.log(error, 'sdada'); - } + } catch (error) {} } } diff --git a/src/modules/configuration/auth/infrastructure/dto/login.dto.ts b/src/modules/configuration/auth/infrastructure/dto/login.dto.ts index c4afbca..267d433 100644 --- a/src/modules/configuration/auth/infrastructure/dto/login.dto.ts +++ b/src/modules/configuration/auth/infrastructure/dto/login.dto.ts @@ -3,11 +3,11 @@ import { LoginRequest } from '../../domain/entities/request.interface'; import { ApiProperty } from '@nestjs/swagger'; export class LoginDto implements LoginRequest { - @ApiProperty({ name: 'username', required: true }) + @ApiProperty({ name: 'username', required: true, default: 'superadmin' }) @IsString() username: string; - @ApiProperty({ name: 'password', required: true }) + @ApiProperty({ name: 'password', required: true, default: 'Eigen123!' }) @IsString() password: string; } diff --git a/yarn.lock b/yarn.lock index a79b917..cc1c5a2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -388,6 +388,11 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== +"@faker-js/faker@^8.4.1": + version "8.4.1" + resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-8.4.1.tgz#5d5e8aee8fce48f5e189bf730ebd1f758f491451" + integrity sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg== + "@humanwhocodes/config-array@^0.11.14": version "0.11.14" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b"