@dssp/project 0.0.5 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -37,9 +37,9 @@ let ProjectQuery = class ProjectQuery {
37
37
  const { domain } = context.state;
38
38
  const queryBuilder = (0, shell_1.getRepository)(project_1.Project)
39
39
  .createQueryBuilder('p')
40
- .select(`COUNT(CASE WHEN bi.status="${building_complex_1.InspectionStatus.REQUEST}" THEN 1 ELSE NULL END) AS request`)
41
- .addSelect(`COUNT(CASE WHEN bi.status="${building_complex_1.InspectionStatus.PASS}" THEN 1 ELSE NULL END) AS pass`)
42
- .addSelect(`COUNT(CASE WHEN bi.status="${building_complex_1.InspectionStatus.FAIL}" THEN 1 ELSE NULL END) AS fail`)
40
+ .select(`COUNT(CASE WHEN bi.status='${building_complex_1.InspectionStatus.REQUEST}' THEN 1 ELSE NULL END) AS request`)
41
+ .addSelect(`COUNT(CASE WHEN bi.status='${building_complex_1.InspectionStatus.PASS}' THEN 1 ELSE NULL END) AS pass`)
42
+ .addSelect(`COUNT(CASE WHEN bi.status='${building_complex_1.InspectionStatus.FAIL}' THEN 1 ELSE NULL END) AS fail`)
43
43
  .innerJoin('p.buildingComplex', 'bc')
44
44
  .innerJoin('bc.buildings', 'b')
45
45
  .innerJoin('b.buildingLevels', 'bl')
@@ -1 +1 @@
1
- {"version":3,"file":"project-query.js","sourceRoot":"","sources":["../../../server/service/project/project-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Query, FieldResolver, Root, Arg, Ctx } from 'type-graphql'\nimport { Domain, getRepository } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { Project } from './project'\nimport { InspectionSummary, ProjectList } from './project-type'\nimport { BuildingComplex, InspectionStatus } from '@dssp/building-complex'\nimport { Attachment } from '@things-factory/attachment-base'\n\n@Resolver(Project)\nexport class ProjectQuery {\n @Query(returns => Project!, { nullable: true, description: 'To fetch a Project' })\n async project(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Project> {\n const { domain } = context.state\n\n return await getRepository(Project).findOne({\n where: { domain: { id: domain.id }, id }\n })\n }\n\n @Query(returns => ProjectList, { description: '프로젝트 리스트' })\n async projects(@Arg('projectName') projectName: string, @Ctx() context: ResolverContext): Promise<ProjectList> {\n const { domain } = context.state\n // const { page = 1, limit = 0 } = params.pagination || {}\n\n const queryBuilder = await getRepository(Project)\n .createQueryBuilder('p')\n .innerJoinAndSelect('p.buildingComplex', 'bc')\n .where('p.domain = :domain', { domain: domain.id })\n .orderBy('p.created_at', 'DESC')\n // .offset((page - 1) * limit)\n // .limit(limit)\n\n if (projectName) {\n projectName = `%${projectName}%`\n queryBuilder.andWhere('p.name LIKE :projectName', { projectName })\n }\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @Query(returns => InspectionSummary, { description: '프로젝트의 검측상태 별 카운트' })\n async inspectionSummary(\n @Arg('projectId') projectId: string,\n @Ctx() context: ResolverContext\n ): Promise<InspectionSummary> {\n const { domain } = context.state\n\n const queryBuilder = getRepository(Project)\n .createQueryBuilder('p')\n .select(`COUNT(CASE WHEN bi.status=\"${InspectionStatus.REQUEST}\" THEN 1 ELSE NULL END) AS request`)\n .addSelect(`COUNT(CASE WHEN bi.status=\"${InspectionStatus.PASS}\" THEN 1 ELSE NULL END) AS pass`)\n .addSelect(`COUNT(CASE WHEN bi.status=\"${InspectionStatus.FAIL}\" THEN 1 ELSE NULL END) AS fail`)\n .innerJoin('p.buildingComplex', 'bc')\n .innerJoin('bc.buildings', 'b')\n .innerJoin('b.buildingLevels', 'bl')\n .innerJoin('bl.buildingInspections', 'bi')\n .where('p.domain = :domain', { domain: domain.id })\n .andWhere('p.id = :projectId', { projectId })\n .groupBy('p.id')\n\n const result = (await queryBuilder.getRawOne()) || {}\n return {\n request: result.request || 0,\n pass: result.pass || 0,\n fail: result.fail || 0\n }\n }\n\n @FieldResolver(type => Attachment)\n async mainPhoto(@Root() project: Project): Promise<string | Attachment> {\n const attachment: Attachment = await getRepository(Attachment).findOne({\n where: {\n domain: { id: project.domainId },\n refBy: project.id\n },\n order: { createdAt: 'ASC' }\n })\n\n return attachment\n }\n\n @FieldResolver(type => BuildingComplex)\n async buildingComplex(@Root() project: Project): Promise<BuildingComplex> {\n return await getRepository(BuildingComplex).findOneBy({ id: project.buildingComplexId })\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() project: Project): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: project.domainId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() project: Project): Promise<User> {\n return await getRepository(User).findOneBy({ id: project.updaterId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() project: Project): Promise<User> {\n return await getRepository(User).findOneBy({ id: project.creatorId })\n }\n}\n"]}
1
+ {"version":3,"file":"project-query.js","sourceRoot":"","sources":["../../../server/service/project/project-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Query, FieldResolver, Root, Arg, Ctx } from 'type-graphql'\nimport { Domain, getRepository } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { Project } from './project'\nimport { InspectionSummary, ProjectList } from './project-type'\nimport { BuildingComplex, InspectionStatus } from '@dssp/building-complex'\nimport { Attachment } from '@things-factory/attachment-base'\n\n@Resolver(Project)\nexport class ProjectQuery {\n @Query(returns => Project!, { nullable: true, description: 'To fetch a Project' })\n async project(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Project> {\n const { domain } = context.state\n\n return await getRepository(Project).findOne({\n where: { domain: { id: domain.id }, id }\n })\n }\n\n @Query(returns => ProjectList, { description: '프로젝트 리스트' })\n async projects(@Arg('projectName') projectName: string, @Ctx() context: ResolverContext): Promise<ProjectList> {\n const { domain } = context.state\n // const { page = 1, limit = 0 } = params.pagination || {}\n\n const queryBuilder = await getRepository(Project)\n .createQueryBuilder('p')\n .innerJoinAndSelect('p.buildingComplex', 'bc')\n .where('p.domain = :domain', { domain: domain.id })\n .orderBy('p.created_at', 'DESC')\n // .offset((page - 1) * limit)\n // .limit(limit)\n\n if (projectName) {\n projectName = `%${projectName}%`\n queryBuilder.andWhere('p.name LIKE :projectName', { projectName })\n }\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @Query(returns => InspectionSummary, { description: '프로젝트의 검측상태 별 카운트' })\n async inspectionSummary(@Arg('projectId') projectId: string, @Ctx() context: ResolverContext): Promise<InspectionSummary> {\n const { domain } = context.state\n\n const queryBuilder = getRepository(Project)\n .createQueryBuilder('p')\n .select(`COUNT(CASE WHEN bi.status='${InspectionStatus.REQUEST}' THEN 1 ELSE NULL END) AS request`)\n .addSelect(`COUNT(CASE WHEN bi.status='${InspectionStatus.PASS}' THEN 1 ELSE NULL END) AS pass`)\n .addSelect(`COUNT(CASE WHEN bi.status='${InspectionStatus.FAIL}' THEN 1 ELSE NULL END) AS fail`)\n .innerJoin('p.buildingComplex', 'bc')\n .innerJoin('bc.buildings', 'b')\n .innerJoin('b.buildingLevels', 'bl')\n .innerJoin('bl.buildingInspections', 'bi')\n .where('p.domain = :domain', { domain: domain.id })\n .andWhere('p.id = :projectId', { projectId })\n .groupBy('p.id')\n\n const result = (await queryBuilder.getRawOne()) || {}\n return {\n request: result.request || 0,\n pass: result.pass || 0,\n fail: result.fail || 0\n }\n }\n\n @FieldResolver(type => Attachment)\n async mainPhoto(@Root() project: Project): Promise<string | Attachment> {\n const attachment: Attachment = await getRepository(Attachment).findOne({\n where: {\n domain: { id: project.domainId },\n refBy: project.id\n },\n order: { createdAt: 'ASC' }\n })\n\n return attachment\n }\n\n @FieldResolver(type => BuildingComplex)\n async buildingComplex(@Root() project: Project): Promise<BuildingComplex> {\n return await getRepository(BuildingComplex).findOneBy({ id: project.buildingComplexId })\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() project: Project): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: project.domainId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() project: Project): Promise<User> {\n return await getRepository(User).findOneBy({ id: project.updaterId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() project: Project): Promise<User> {\n return await getRepository(User).findOneBy({ id: project.creatorId })\n }\n}\n"]}