From 2704a9ee9eb454458a5154352fcc0244a37ea192 Mon Sep 17 00:00:00 2001 From: pincman Date: Thu, 9 May 2024 04:34:52 +0800 Subject: [PATCH] update --- apps/api/package.json | 1 + apps/api/src/app.module.ts | 2 +- apps/api/src/config/database.config.ts | 1 + ...0508080237.ts => Migration20240508201511.ts} | 2 +- apps/api/src/database/seeders/DatabaseSeeder.ts | 4 ++-- apps/api/src/database/seeders/PostSeeder.ts | 6 ------ .../src/database/seeders/content/PostFactory.ts | 17 +++++++++++++++++ .../src/database/seeders/content/PostSeeder.ts | 10 ++++++++++ .../modules/content/services/post.service.ts | 5 ++++- apps/api/src/modules/database/helpers.ts | 7 ++++++- pnpm-lock.yaml | 9 +++++++++ 11 files changed, 52 insertions(+), 12 deletions(-) rename apps/api/src/database/migrations/{Migration20240508080237.ts => Migration20240508201511.ts} (91%) delete mode 100644 apps/api/src/database/seeders/PostSeeder.ts create mode 100644 apps/api/src/database/seeders/content/PostFactory.ts create mode 100644 apps/api/src/database/seeders/content/PostSeeder.ts diff --git a/apps/api/package.json b/apps/api/package.json index 2887d18..5865036 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -40,6 +40,7 @@ }, "devDependencies": { "@3rapp/code-config": "workspace:*", + "@faker-js/faker": "^8.4.1", "@nestjs/cli": "^10.3.2", "@nestjs/schematics": "^10.1.1", "@nestjs/testing": "^10.3.8", diff --git a/apps/api/src/app.module.ts b/apps/api/src/app.module.ts index 7fd98a5..56d1a65 100644 --- a/apps/api/src/app.module.ts +++ b/apps/api/src/app.module.ts @@ -10,7 +10,7 @@ import { moduleImports } from './module.list'; imports: [ MikroOrmModule.forRoot({ ...database(), - registerRequestContext: true, + // registerRequestContext: true, // autoLoadEntities: true, }), ...moduleImports, diff --git a/apps/api/src/config/database.config.ts b/apps/api/src/config/database.config.ts index a4b0230..2d82205 100644 --- a/apps/api/src/config/database.config.ts +++ b/apps/api/src/config/database.config.ts @@ -15,6 +15,7 @@ export const database = () => entities: getEntities(moduleImports), extensions: [Migrator, SeedManager], migrations: { + disableForeignKeys: false, tableName: 'migrations', path: Utils.detectTsNode() ? 'src/database/migrations' : 'dist/database/migrations', }, diff --git a/apps/api/src/database/migrations/Migration20240508080237.ts b/apps/api/src/database/migrations/Migration20240508201511.ts similarity index 91% rename from apps/api/src/database/migrations/Migration20240508080237.ts rename to apps/api/src/database/migrations/Migration20240508201511.ts index e5d3cf0..36f7435 100644 --- a/apps/api/src/database/migrations/Migration20240508080237.ts +++ b/apps/api/src/database/migrations/Migration20240508201511.ts @@ -1,6 +1,6 @@ import { Migration } from '@mikro-orm/migrations'; -export class Migration20240508080237 extends Migration { +export class Migration20240508201511 extends Migration { async up(): Promise { this.addSql( 'create table "3rapp_posts" ("id" uuid not null, "title" varchar(255) not null, "body" text not null, "keywords" text[] null, "created_at" timestamptz not null, "updated_at" timestamptz not null, constraint "3rapp_posts_pkey" primary key ("id"));', diff --git a/apps/api/src/database/seeders/DatabaseSeeder.ts b/apps/api/src/database/seeders/DatabaseSeeder.ts index 7c42c78..c808f22 100644 --- a/apps/api/src/database/seeders/DatabaseSeeder.ts +++ b/apps/api/src/database/seeders/DatabaseSeeder.ts @@ -1,10 +1,10 @@ import type { EntityManager } from '@mikro-orm/core'; import { Seeder } from '@mikro-orm/seeder'; -import { PostSeeder } from './PostSeeder'; +import { ContentPostSeeder } from './content/PostSeeder'; export class DatabaseSeeder extends Seeder { async run(em: EntityManager): Promise { - return this.call(em, [PostSeeder]); + return this.call(em, [ContentPostSeeder]); } } diff --git a/apps/api/src/database/seeders/PostSeeder.ts b/apps/api/src/database/seeders/PostSeeder.ts deleted file mode 100644 index 2f72a56..0000000 --- a/apps/api/src/database/seeders/PostSeeder.ts +++ /dev/null @@ -1,6 +0,0 @@ -import type { EntityManager } from '@mikro-orm/core'; -import { Seeder } from '@mikro-orm/seeder'; - -export class PostSeeder extends Seeder { - async run(em: EntityManager): Promise {} -} diff --git a/apps/api/src/database/seeders/content/PostFactory.ts b/apps/api/src/database/seeders/content/PostFactory.ts new file mode 100644 index 0000000..a661f7e --- /dev/null +++ b/apps/api/src/database/seeders/content/PostFactory.ts @@ -0,0 +1,17 @@ +import { Factory } from '@mikro-orm/seeder'; + +import { PostEntity } from '@/modules/content/entities/post.entity'; +import { getFaker } from '@/modules/database/helpers'; + +export class ContentPostFactory extends Factory { + model = PostEntity; + + definition(): Partial { + const faker = getFaker(); + return { + title: faker.lorem.sentence({ min: 3, max: 9 }), + body: faker.lorem.paragraphs({ min: 1, max: 5 }, '
\n'), + keywords: faker.lorem.words({ min: 0, max: 6 }).split(' '), + }; + } +} diff --git a/apps/api/src/database/seeders/content/PostSeeder.ts b/apps/api/src/database/seeders/content/PostSeeder.ts new file mode 100644 index 0000000..5f8f392 --- /dev/null +++ b/apps/api/src/database/seeders/content/PostSeeder.ts @@ -0,0 +1,10 @@ +import type { EntityManager } from '@mikro-orm/core'; +import { Seeder } from '@mikro-orm/seeder'; + +import { ContentPostFactory } from './PostFactory'; + +export class ContentPostSeeder extends Seeder { + async run(em: EntityManager): Promise { + new ContentPostFactory(em).create(15); + } +} diff --git a/apps/api/src/modules/content/services/post.service.ts b/apps/api/src/modules/content/services/post.service.ts index e569167..b5013fb 100644 --- a/apps/api/src/modules/content/services/post.service.ts +++ b/apps/api/src/modules/content/services/post.service.ts @@ -8,7 +8,10 @@ export class PostService { constructor(protected postRepo: PostRepository) {} @CreateRequestContext((t) => t.postRepo) - async doSomething() { + async item() { console.log('test'); } + + @CreateRequestContext((t) => t.postRepo) + async list() {} } diff --git a/apps/api/src/modules/database/helpers.ts b/apps/api/src/modules/database/helpers.ts index 30ed5cb..44fd372 100644 --- a/apps/api/src/modules/database/helpers.ts +++ b/apps/api/src/modules/database/helpers.ts @@ -1,3 +1,4 @@ +import { base, zh_CN, en, Faker } from '@faker-js/faker'; import { ModuleMetadata } from '@nestjs/common'; import { isFunction } from 'lodash'; @@ -5,4 +6,8 @@ export const getEntities = (modules: ModuleMetadata['imports'] = []) => modules .map((m) => ('entities' in m && isFunction(m.entities) ? m.entities() : [])) .reduce((o, n) => [...o, ...n], []); -export const resolveConfig = () => {}; + +const faker = new Faker({ + locale: [zh_CN, en, base], +}); +export const getFaker = () => faker; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8108bed..0834b80 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -142,6 +142,9 @@ importers: '@3rapp/code-config': specifier: workspace:* version: link:../../packages/code-config + '@faker-js/faker': + specifier: ^8.4.1 + version: 8.4.1 '@nestjs/cli': specifier: ^10.3.2 version: 10.3.2(@swc/cli@0.3.12(@swc/core@1.5.3(@swc/helpers@0.5.11))(chokidar@3.6.0))(@swc/core@1.5.3(@swc/helpers@0.5.11)) @@ -814,6 +817,10 @@ packages: resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@faker-js/faker@8.4.1': + resolution: {integrity: sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'} + '@fastify/ajv-compiler@3.5.0': resolution: {integrity: sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==} @@ -6130,6 +6137,8 @@ snapshots: '@eslint/js@8.57.0': {} + '@faker-js/faker@8.4.1': {} + '@fastify/ajv-compiler@3.5.0': dependencies: ajv: 8.13.0