import { dataSource } from "../../../data-source"; import { inspection } from "../../../entity/unit/inspection/inspection"; import DatabaseActionException from "../../../exceptions/databaseActionException"; export default abstract class InspectionService { /** * @description get all inspections for related * @returns {Promise<Array<inspection>>} */ static async getAllForRelated(where: { equipmentId: string } | { vehicleId: string }): Promise<Array<inspection>> { return await dataSource .getRepository(inspection) .createQueryBuilder("inspection") .leftJoinAndSelect("inspection.inspectionPlan", "inspectionPlan") .leftJoinAndSelect("inspection.inspectionVersionedPlan", "inspectionVersionedPlan") .leftJoinAndSelect("inspectionVersionedPlan.inspectionPoints", "inspectionPoints") .leftJoinAndSelect("inspection.pointResults", "pointResults") .leftJoinAndSelect("pointResults.inspectionPoint", "inspectionPoint") .leftJoinAndSelect("inspection.equipment", "equipment") .leftJoinAndSelect("inspection.vehicle", "vehicle") .where(where) .orderBy("createdAt", "DESC") .getMany() .then((res) => { return res; }) .catch((err) => { throw new DatabaseActionException("SELECT", "inspection", err); }); } /** * @description get inspection by id * @returns {Promise<inspection>} */ static async getById(id: string): Promise<inspection> { return await dataSource .getRepository(inspection) .createQueryBuilder("inspection") .leftJoinAndSelect("inspection.inspectionPlan", "inspectionPlan") .leftJoinAndSelect("inspection.inspectionVersionedPlan", "inspectionVersionedPlan") .leftJoinAndSelect("inspectionVersionedPlan.inspectionPoints", "inspectionPoints") .leftJoinAndSelect("inspection.pointResults", "pointResults") .leftJoinAndSelect("pointResults.inspectionPoint", "inspectionPoint") .leftJoinAndSelect("inspection.equipment", "equipment") .leftJoinAndSelect("inspection.vehicle", "vehicle") .where({ id }) .getOneOrFail() .then((res) => { return res; }) .catch((err) => { throw new DatabaseActionException("SELECT", "inspection", err); }); } }