import { dataSource } from "../../../data-source"; import { memberEducations } from "../../../entity/club/member/memberEducations"; import DatabaseActionException from "../../../exceptions/databaseActionException"; import InternalException from "../../../exceptions/internalException"; import { CreateMemberEducationCommand, DeleteMemberEducationCommand, UpdateMemberEducationCommand, } from "./memberEducationCommand"; export default abstract class MemberEducationCommandHandler { /** * @description create memberEducation * @param {CreateMemberEducationCommand} createMemberEducation * @returns {Promise} */ static async create(createMemberEducation: CreateMemberEducationCommand): Promise { return await dataSource .createQueryBuilder() .insert() .into(memberEducations) .values({ note: createMemberEducation.note, place: createMemberEducation.place, start: createMemberEducation.start, end: createMemberEducation.end, memberId: createMemberEducation.memberId, educationId: createMemberEducation.educationId, }) .execute() .then((result) => { return result.identifiers[0].id; }) .catch((err) => { throw new DatabaseActionException("CREATE", "memberEducation", err); }); } /** * @description update memberEducation * @param {UpdateMemberEducationCommand} updateMemberEducation * @returns {Promise} */ static async update(updateMemberEducation: UpdateMemberEducationCommand): Promise { return await dataSource .createQueryBuilder() .update(memberEducations) .set({ note: updateMemberEducation.note, start: updateMemberEducation.start, end: updateMemberEducation.end, place: updateMemberEducation.place, educationId: updateMemberEducation.educationId, }) .where("id = :id", { id: updateMemberEducation.id }) .andWhere("memberId = :memberId", { memberId: updateMemberEducation.memberId }) .execute() .then(() => {}) .catch((err) => { throw new DatabaseActionException("UPDATE", "memberEducation", err); }); } /** * @description delete memberEducation * @param {DeleteMemberEducationCommand} deleteMemberEducation * @returns {Promise} */ static async delete(deleteMemberEducation: DeleteMemberEducationCommand): Promise { return await dataSource .createQueryBuilder() .delete() .from(memberEducations) .where("id = :id", { id: deleteMemberEducation.id }) .andWhere("memberId = :memberId", { memberId: deleteMemberEducation.memberId }) .execute() .then(() => {}) .catch((err) => { throw new DatabaseActionException("DELETE", "memberEducation", err); }); } }