import { dataSource } from "../../../data-source"; import { memberAwards } from "../../../entity/club/member/memberAwards"; import DatabaseActionException from "../../../exceptions/databaseActionException"; import InternalException from "../../../exceptions/internalException"; import { CreateMemberAwardCommand, DeleteMemberAwardCommand, UpdateMemberAwardCommand } from "./memberAwardCommand"; export default abstract class MemberAwardCommandHandler { /** * @description create memberAward * @param {CreateMemberAwardCommand} createMemberAward * @returns {Promise} */ static async create(createMemberAward: CreateMemberAwardCommand): Promise { return await dataSource .createQueryBuilder() .insert() .into(memberAwards) .values({ given: createMemberAward.given, note: createMemberAward.note, date: createMemberAward.date, memberId: createMemberAward.memberId, awardId: createMemberAward.awardId, }) .execute() .then((result) => { return result.identifiers[0].id; }) .catch((err) => { throw new DatabaseActionException("CREATE", "memberAward", err); }); } /** * @description update memberAward * @param {UpdateMemberAwardCommand} updateMemberAward * @returns {Promise} */ static async update(updateMemberAward: UpdateMemberAwardCommand): Promise { return await dataSource .createQueryBuilder() .update(memberAwards) .set({ given: updateMemberAward.given, note: updateMemberAward.note, date: updateMemberAward.date, award: updateMemberAward.awardId, }) .where("id = :id", { id: updateMemberAward.id }) .andWhere("memberId = :memberId", { memberId: updateMemberAward.memberId }) .execute() .then(() => {}) .catch((err) => { throw new DatabaseActionException("UPDATE", "memberAward", err); }); } /** * @description delete memberAward * @param {DeleteMemberAwardCommand} deleteMemberAward * @returns {Promise} */ static async delete(deleteMemberAward: DeleteMemberAwardCommand): Promise { return await dataSource .createQueryBuilder() .delete() .from(memberAwards) .where("id = :id", { id: deleteMemberAward.id }) .andWhere("memberId = :memberId", { memberId: deleteMemberAward.memberId }) .execute() .then(() => {}) .catch((err) => { throw new DatabaseActionException("DELETE", "memberAward", err); }); } }