ff-admin-server/src/command/club/member/memberEducationCommandHandler.ts

83 lines
2.8 KiB
TypeScript
Raw Normal View History

2025-06-03 15:20:46 +02:00
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<number>}
*/
static async create(createMemberEducation: CreateMemberEducationCommand): Promise<number> {
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<void>}
*/
static async update(updateMemberEducation: UpdateMemberEducationCommand): Promise<void> {
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<void>}
*/
static async delete(deleteMemberEducation: DeleteMemberEducationCommand): Promise<void> {
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);
});
}
}