import { dataSource } from "../../../data-source"; import { vehicle } from "../../../entity/configuration/vehicle"; import DatabaseActionException from "../../../exceptions/databaseActionException"; import { CreateVehicleCommand, DeleteVehicleCommand, UpdateVehicleCommand } from "./vehicleCommand"; export default abstract class VehicleCommandHandler { /** * @description create vehicle * @param {CreateVehicleCommand} createVehicle * @returns {Promise} */ static async create(createVehicle: CreateVehicleCommand): Promise { return await dataSource .createQueryBuilder() .insert() .into(vehicle) .values({ code: createVehicle.code, type: createVehicle.type, name: createVehicle.name, commissioned: createVehicle.commissioned, decommissioned: createVehicle.decommissioned, }) .execute() .then((result) => { return result.identifiers[0].id; }) .catch((err) => { throw new DatabaseActionException("CREATE", "vehicle", err); }); } /** * @description update vehicle * @param {UpdateVehicleCommand} updateVehicle * @returns {Promise} */ static async update(updateVehicle: UpdateVehicleCommand): Promise { return await dataSource .createQueryBuilder() .update(vehicle) .set({ code: updateVehicle.code, type: updateVehicle.type, name: updateVehicle.name, commissioned: updateVehicle.commissioned, decommissioned: updateVehicle.decommissioned, }) .where("id = :id", { id: updateVehicle.id }) .execute() .then(() => {}) .catch((err) => { throw new DatabaseActionException("UPDATE", "vehicle", err); }); } /** * @description delete vehicle * @param {DeleteVehicleCommand} deleteVehicle * @returns {Promise} */ static async delete(deleteVehicle: DeleteVehicleCommand): Promise { return await dataSource .createQueryBuilder() .delete() .from(vehicle) .where("id = :id", { id: deleteVehicle.id }) .execute() .then(() => {}) .catch((err) => { throw new DatabaseActionException("DELETE", "vehicle", err); }); } }