import { dataSource } from "../../../data-source"; import { memberExecutivePositions } from "../../../entity/club/member/memberExecutivePositions"; import DatabaseActionException from "../../../exceptions/databaseActionException"; import InternalException from "../../../exceptions/internalException"; import { CreateMemberExecutivePositionCommand, DeleteMemberExecutivePositionCommand, UpdateMemberExecutivePositionCommand, } from "./memberExecutivePositionCommand"; export default abstract class MemberExecutivePositionCommandHandler { /** * @description create memberExecutivePosition * @param {CreateMemberExecutivePositionCommand} createMemberExecutivePosition * @returns {Promise} */ static async create(createMemberExecutivePosition: CreateMemberExecutivePositionCommand): Promise { return await dataSource .createQueryBuilder() .insert() .into(memberExecutivePositions) .values({ note: createMemberExecutivePosition.note, start: createMemberExecutivePosition.start, end: createMemberExecutivePosition.end, memberId: createMemberExecutivePosition.memberId, executivePositionId: createMemberExecutivePosition.executivePositionId, }) .execute() .then((result) => { return result.identifiers[0].id; }) .catch((err) => { throw new DatabaseActionException("CREATE", "memberExecutivePosition", err); }); } /** * @description update memberExecutivePosition * @param {UpdateMemberExecutivePositionCommand} updateMemberExecutivePosition * @returns {Promise} */ static async update(updateMemberExecutivePosition: UpdateMemberExecutivePositionCommand): Promise { return await dataSource .createQueryBuilder() .update(memberExecutivePositions) .set({ note: updateMemberExecutivePosition.note, start: updateMemberExecutivePosition.start, end: updateMemberExecutivePosition.end, executivePositionId: updateMemberExecutivePosition.executivePositionId, }) .where("id = :id", { id: updateMemberExecutivePosition.id }) .andWhere("memberId = :memberId", { memberId: updateMemberExecutivePosition.memberId }) .execute() .then(() => {}) .catch((err) => { throw new DatabaseActionException("UPDATE", "memberExecutivePosition", err); }); } /** * @description delete memberExecutivePosition * @param {DeleteMemberExecutivePositionCommand} deleteMemberExecutivePosition * @returns {Promise} */ static async delete(deleteMemberExecutivePosition: DeleteMemberExecutivePositionCommand): Promise { return await dataSource .createQueryBuilder() .delete() .from(memberExecutivePositions) .where("id = :id", { id: deleteMemberExecutivePosition.id }) .andWhere("memberId = :memberId", { memberId: deleteMemberExecutivePosition.memberId }) .execute() .then(() => {}) .catch((err) => { throw new DatabaseActionException("DELETE", "memberExecutivePosition", err); }); } }