import { dataSource } from "../../../data-source"; import { communication } from "../../../entity/club/member/communication"; import { member } from "../../../entity/club/member/member"; import DatabaseActionException from "../../../exceptions/databaseActionException"; import InternalException from "../../../exceptions/internalException"; import { CreateMemberCommand, DeleteMemberCommand, UpdateMemberCommand } from "./memberCommand"; export default abstract class MemberCommandHandler { /** * @description create member * @param {CreateMemberCommand} createMember * @returns {Promise} */ static async create(createMember: CreateMemberCommand): Promise { return await dataSource .createQueryBuilder() .insert() .into(member) .values({ salutationId: createMember.salutationId, firstname: createMember.firstname, lastname: createMember.lastname, nameaffix: createMember.nameaffix, birthdate: createMember.birthdate, internalId: createMember.internalId, }) .execute() .then((result) => { return result.identifiers[0].id; }) .catch((err) => { throw new DatabaseActionException("CREATE", "member", err); }); } /** * @description update member * @param {UpdateMemberCommand} updateMember * @returns {Promise} */ static async update(updateMember: UpdateMemberCommand): Promise { return await dataSource .createQueryBuilder() .update(member) .set({ salutationId: updateMember.salutationId, firstname: updateMember.firstname, lastname: updateMember.lastname, nameaffix: updateMember.nameaffix, birthdate: updateMember.birthdate, internalId: updateMember.internalId, }) .where("id = :id", { id: updateMember.id }) .execute() .then(() => {}) .catch((err) => { throw new DatabaseActionException("UPDATE", "member", err); }); } /** * @description delete member * @param {DeleteMemberCommand} deleteMember * @returns {Promise} */ static async delete(deleteMember: DeleteMemberCommand): Promise { return await dataSource .createQueryBuilder() .delete() .from(member) .where("id = :id", { id: deleteMember.id }) .execute() .then(() => {}) .catch((err) => { throw new DatabaseActionException("DELETE", "member", err); }); } }