update
This commit is contained in:
parent
011ae4b467
commit
2704a9ee9e
@ -40,6 +40,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@3rapp/code-config": "workspace:*",
|
"@3rapp/code-config": "workspace:*",
|
||||||
|
"@faker-js/faker": "^8.4.1",
|
||||||
"@nestjs/cli": "^10.3.2",
|
"@nestjs/cli": "^10.3.2",
|
||||||
"@nestjs/schematics": "^10.1.1",
|
"@nestjs/schematics": "^10.1.1",
|
||||||
"@nestjs/testing": "^10.3.8",
|
"@nestjs/testing": "^10.3.8",
|
||||||
|
@ -10,7 +10,7 @@ import { moduleImports } from './module.list';
|
|||||||
imports: [
|
imports: [
|
||||||
MikroOrmModule.forRoot({
|
MikroOrmModule.forRoot({
|
||||||
...database(),
|
...database(),
|
||||||
registerRequestContext: true,
|
// registerRequestContext: true,
|
||||||
// autoLoadEntities: true,
|
// autoLoadEntities: true,
|
||||||
}),
|
}),
|
||||||
...moduleImports,
|
...moduleImports,
|
||||||
|
@ -15,6 +15,7 @@ export const database = () =>
|
|||||||
entities: getEntities(moduleImports),
|
entities: getEntities(moduleImports),
|
||||||
extensions: [Migrator, SeedManager],
|
extensions: [Migrator, SeedManager],
|
||||||
migrations: {
|
migrations: {
|
||||||
|
disableForeignKeys: false,
|
||||||
tableName: 'migrations',
|
tableName: 'migrations',
|
||||||
path: Utils.detectTsNode() ? 'src/database/migrations' : 'dist/database/migrations',
|
path: Utils.detectTsNode() ? 'src/database/migrations' : 'dist/database/migrations',
|
||||||
},
|
},
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { Migration } from '@mikro-orm/migrations';
|
import { Migration } from '@mikro-orm/migrations';
|
||||||
|
|
||||||
export class Migration20240508080237 extends Migration {
|
export class Migration20240508201511 extends Migration {
|
||||||
async up(): Promise<void> {
|
async up(): Promise<void> {
|
||||||
this.addSql(
|
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"));',
|
'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"));',
|
@ -1,10 +1,10 @@
|
|||||||
import type { EntityManager } from '@mikro-orm/core';
|
import type { EntityManager } from '@mikro-orm/core';
|
||||||
import { Seeder } from '@mikro-orm/seeder';
|
import { Seeder } from '@mikro-orm/seeder';
|
||||||
|
|
||||||
import { PostSeeder } from './PostSeeder';
|
import { ContentPostSeeder } from './content/PostSeeder';
|
||||||
|
|
||||||
export class DatabaseSeeder extends Seeder {
|
export class DatabaseSeeder extends Seeder {
|
||||||
async run(em: EntityManager): Promise<void> {
|
async run(em: EntityManager): Promise<void> {
|
||||||
return this.call(em, [PostSeeder]);
|
return this.call(em, [ContentPostSeeder]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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<void> {}
|
|
||||||
}
|
|
17
apps/api/src/database/seeders/content/PostFactory.ts
Normal file
17
apps/api/src/database/seeders/content/PostFactory.ts
Normal file
@ -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<PostEntity> {
|
||||||
|
model = PostEntity;
|
||||||
|
|
||||||
|
definition(): Partial<PostEntity> {
|
||||||
|
const faker = getFaker();
|
||||||
|
return {
|
||||||
|
title: faker.lorem.sentence({ min: 3, max: 9 }),
|
||||||
|
body: faker.lorem.paragraphs({ min: 1, max: 5 }, '<br/>\n'),
|
||||||
|
keywords: faker.lorem.words({ min: 0, max: 6 }).split(' '),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
10
apps/api/src/database/seeders/content/PostSeeder.ts
Normal file
10
apps/api/src/database/seeders/content/PostSeeder.ts
Normal file
@ -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<void> {
|
||||||
|
new ContentPostFactory(em).create(15);
|
||||||
|
}
|
||||||
|
}
|
@ -8,7 +8,10 @@ export class PostService {
|
|||||||
constructor(protected postRepo: PostRepository) {}
|
constructor(protected postRepo: PostRepository) {}
|
||||||
|
|
||||||
@CreateRequestContext<PostService>((t) => t.postRepo)
|
@CreateRequestContext<PostService>((t) => t.postRepo)
|
||||||
async doSomething() {
|
async item() {
|
||||||
console.log('test');
|
console.log('test');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@CreateRequestContext<PostService>((t) => t.postRepo)
|
||||||
|
async list() {}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { base, zh_CN, en, Faker } from '@faker-js/faker';
|
||||||
import { ModuleMetadata } from '@nestjs/common';
|
import { ModuleMetadata } from '@nestjs/common';
|
||||||
import { isFunction } from 'lodash';
|
import { isFunction } from 'lodash';
|
||||||
|
|
||||||
@ -5,4 +6,8 @@ export const getEntities = (modules: ModuleMetadata['imports'] = []) =>
|
|||||||
modules
|
modules
|
||||||
.map((m) => ('entities' in m && isFunction(m.entities) ? m.entities() : []))
|
.map((m) => ('entities' in m && isFunction(m.entities) ? m.entities() : []))
|
||||||
.reduce((o, n) => [...o, ...n], []);
|
.reduce((o, n) => [...o, ...n], []);
|
||||||
export const resolveConfig = () => {};
|
|
||||||
|
const faker = new Faker({
|
||||||
|
locale: [zh_CN, en, base],
|
||||||
|
});
|
||||||
|
export const getFaker = () => faker;
|
||||||
|
@ -142,6 +142,9 @@ importers:
|
|||||||
'@3rapp/code-config':
|
'@3rapp/code-config':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../packages/code-config
|
version: link:../../packages/code-config
|
||||||
|
'@faker-js/faker':
|
||||||
|
specifier: ^8.4.1
|
||||||
|
version: 8.4.1
|
||||||
'@nestjs/cli':
|
'@nestjs/cli':
|
||||||
specifier: ^10.3.2
|
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))
|
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==}
|
resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
|
||||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
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':
|
'@fastify/ajv-compiler@3.5.0':
|
||||||
resolution: {integrity: sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==}
|
resolution: {integrity: sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==}
|
||||||
|
|
||||||
@ -6130,6 +6137,8 @@ snapshots:
|
|||||||
|
|
||||||
'@eslint/js@8.57.0': {}
|
'@eslint/js@8.57.0': {}
|
||||||
|
|
||||||
|
'@faker-js/faker@8.4.1': {}
|
||||||
|
|
||||||
'@fastify/ajv-compiler@3.5.0':
|
'@fastify/ajv-compiler@3.5.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
ajv: 8.13.0
|
ajv: 8.13.0
|
||||||
|
Loading…
Reference in New Issue
Block a user