Skip to content

Commit 0b7b4cc

Browse files
committed
refactor(json-api-nestjs): create modules for each orm
1 parent bb8a415 commit 0b7b4cc

20 files changed

+367
-19
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { ParseUUIDPipe } from '@nestjs/common';
2+
import { JsonApi, JsonBaseController } from '@klerick/json-api-nestjs';
3+
4+
import { BookList } from '@nestjs-json-api/microorm-database';
5+
@JsonApi(BookList, {
6+
pipeForId: ParseUUIDPipe,
7+
overrideRoute: 'override-book-list',
8+
allowMethod: ['getOne', 'postOne', 'deleteOne'],
9+
})
10+
export class ExtendBookListController extends JsonBaseController<BookList> {}

apps/json-api-server/src/app/resources/controllers/extend-user/extend-user.controller.ts renamed to apps/json-api-server/src/app/resources/micro-orm/controllers/extend-user/extend-user.controller.ts

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
InjectService,
1515
JsonApiService,
1616
Query as QueryType,
17+
QueryOne,
1718
ResourceObject,
1819
EntityRelation,
1920
PatchRelationshipData,
@@ -29,44 +30,45 @@ import {
2930
HttpExceptionMethodFilter,
3031
} from '../../service/http-exception.filter';
3132
import { GuardService, EntityName } from '../../service/guard.service';
32-
import { Users } from '../entity-orm';
33+
34+
import { Users } from '@nestjs-json-api/microorm-database';
3335
import { AtomicInterceptor } from '../../service/atomic.interceptor';
3436

3537
@UseGuards(GuardService)
3638
@UseFilters(new HttpExceptionFilter())
3739
@UseInterceptors(ControllerInterceptor)
38-
@JsonApi(Users as any)
39-
export class ExtendUserController extends JsonBaseController<typeof Users> {
40-
@InjectService() public service: JsonApiService<typeof Users>;
40+
@JsonApi(Users)
41+
export class ExtendUserController extends JsonBaseController<Users> {
42+
@InjectService() public service: JsonApiService<Users>;
4143
@Inject(ExampleService) protected exampleService: ExampleService;
42-
getOne(
44+
override getOne(
4345
id: string | number,
44-
query: QueryType<typeof Users>
45-
): Promise<ResourceObject<typeof Users>> {
46+
query: QueryOne<Users>
47+
): Promise<ResourceObject<Users>> {
48+
const t = query.fields?.target;
49+
4650
return super.getOne(id, query);
4751
}
4852

49-
patchRelationship<Rel extends EntityRelation<typeof Users>>(
53+
patchRelationship<Rel extends EntityRelation<Users>>(
5054
id: string | number,
5155
relName: Rel,
5256
input: PatchRelationshipData
53-
): Promise<ResourceObjectRelationships<typeof Users, Rel>> {
57+
): Promise<ResourceObjectRelationships<Users, Rel>> {
5458
return super.patchRelationship(id, relName, input);
5559
}
5660

5761
// @UseInterceptors(AtomicInterceptor)
58-
postOne(
59-
inputData: PostData<typeof Users>
60-
): Promise<ResourceObject<typeof Users>> {
62+
postOne(inputData: PostData<Users>): Promise<ResourceObject<Users>> {
6163
return super.postOne(inputData);
6264
}
6365

6466
@EntityName('Users')
6567
@UseFilters(HttpExceptionMethodFilter)
6668
@UseInterceptors(MethodInterceptor)
6769
getAll(
68-
@Query(ExamplePipe) query: QueryType<typeof Users>
69-
): Promise<ResourceObject<typeof Users, 'array'>> {
70+
@Query(ExamplePipe) query: QueryType<Users>
71+
): Promise<ResourceObject<Users, 'array'>> {
7072
return super.getAll(query);
7173
}
7274

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { Module } from '@nestjs/common';
2+
import { JsonApiModule, MicroOrmJsonApiModule } from '@klerick/json-api-nestjs';
3+
import {
4+
Users,
5+
Addresses,
6+
Comments,
7+
Roles,
8+
BookList,
9+
} from '@nestjs-json-api/microorm-database';
10+
11+
import { ExtendBookListController } from './controllers/extend-book-list/extend-book-list.controller';
12+
import { ExtendUserController } from './controllers/extend-user/extend-user.controller';
13+
import { ExampleService } from './service/example.service';
14+
15+
@Module({
16+
imports: [
17+
JsonApiModule.forRoot(MicroOrmJsonApiModule, {
18+
entities: [Users, Addresses, Comments, Roles, BookList],
19+
controllers: [ExtendBookListController, ExtendUserController],
20+
providers: [ExampleService],
21+
options: {
22+
debug: true,
23+
requiredSelectField: false,
24+
operationUrl: 'operation',
25+
},
26+
}),
27+
],
28+
})
29+
export class ResourcesMicroModule {}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import {
2+
ArgumentMetadata,
3+
BadRequestException,
4+
PipeTransform,
5+
} from '@nestjs/common';
6+
7+
import { Query } from '@klerick/json-api-nestjs';
8+
import { Users } from '@nestjs-json-api/microorm-database';
9+
10+
export class ExamplePipe implements PipeTransform<Query<Users>, Query<Users>> {
11+
transform(value: Query<Users>, metadata: ArgumentMetadata): Query<Users> {
12+
if (value.filter.target?.firstName?.eq === 'testCustomPipe') {
13+
const error = {
14+
code: 'invalid_arguments',
15+
message: `Custom query pipe error`,
16+
path: [],
17+
};
18+
throw new BadRequestException([error]);
19+
}
20+
return value;
21+
}
22+
}

0 commit comments

Comments
 (0)