refactor: refactored the getProjectDetail function to include more values
This commit is contained in:
@@ -57,4 +57,9 @@ export class TMTask extends BaseEntity {
|
|||||||
inverseJoinColumn: { name: "userId", referencedColumnName: "id" },
|
inverseJoinColumn: { name: "userId", referencedColumnName: "id" },
|
||||||
})
|
})
|
||||||
users: User[];
|
users: User[];
|
||||||
|
|
||||||
|
// deriven(calculated) attributes. not database columns
|
||||||
|
attachmentCount?: number;
|
||||||
|
checkListItemCount?: number;
|
||||||
|
completedCheckListItemCount?: number;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,17 +23,43 @@ export class ProjectRepository extends Repository<TMProject> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async getProjectDetail(projectId: string): Promise<TMProject | null> {
|
async getProjectDetail(projectId: string): Promise<TMProject | null> {
|
||||||
return this.createQueryBuilder('project')
|
return this.createQueryBuilder("project")
|
||||||
.leftJoinAndSelect('project.taskPhases', 'taskPhase')
|
.leftJoinAndSelect("project.taskPhases", "taskPhase")
|
||||||
.leftJoinAndSelect('taskPhase.tasks', 'task')
|
.leftJoinAndSelect("taskPhase.tasks", "task")
|
||||||
.where('project.id = :projectId', {projectId})
|
.leftJoinAndSelect("task.remarks", "remark")
|
||||||
.select([
|
|
||||||
"project.id",
|
.loadRelationCountAndMap(
|
||||||
"project.name",
|
"task.attachmentCount",
|
||||||
"taskPhase.id",
|
"task.attachments",
|
||||||
"taskPhase.name",
|
)
|
||||||
"task.id",
|
|
||||||
"task.title"
|
.loadRelationCountAndMap(
|
||||||
]).getOne();
|
"task.checkListItemCount",
|
||||||
|
"task.checkListItems",
|
||||||
|
)
|
||||||
|
|
||||||
|
.loadRelationCountAndMap(
|
||||||
|
"task.completedCheckListItemCount",
|
||||||
|
"task.checkListItems",
|
||||||
|
"completedCheckListItems",
|
||||||
|
(qb) => qb.where("completedCheckListItems.isDone = :isDone", { isDone: true }),
|
||||||
|
)
|
||||||
|
|
||||||
|
.where("project.id = :projectId", { projectId })
|
||||||
|
|
||||||
|
.select([
|
||||||
|
"project.id",
|
||||||
|
"project.name",
|
||||||
|
"taskPhase.id",
|
||||||
|
"taskPhase.name",
|
||||||
|
"task.id",
|
||||||
|
"task.title",
|
||||||
|
"task.startDate",
|
||||||
|
"task.endDate",
|
||||||
|
"remark.title",
|
||||||
|
"remark.color",
|
||||||
|
])
|
||||||
|
|
||||||
|
.getOne();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user