π― Fields Query Integration β
QueryDTO keeps fields?: string as a controller-facing input. Parsing and projection stay in @querry-kit/nest-fields-query.
ts
import { Fields } from '@querry-kit/nest-fields-query';
import { PaginatedDTO, QueryDTO } from '@querry-kit/nest-prisma-query';
@Get()
async query(@Query() query: QueryDTO<ProjectTypeMap>): Promise<PaginatedDTO<ProjectDTO>> {
const projection = Fields.parseAndValidate(query.fields, projectSchema);
const include = projection ? Fields.include(projection, projectSchema, query.include) : query.include;
const { items, pageMeta } = await this.projectsService.query<Project>({
...query,
include,
});
return new PaginatedDTO(Fields.project(items.map(ProjectDTO.fromModel), projection), pageMeta);
}Keep this logic in controllers or resource-specific services. @querry-kit/nest-prisma-query intentionally does not infer Prisma projection from the fields string.