update database error messages

This commit is contained in:
Julian Krauser 2025-01-29 09:42:22 +01:00
parent f89483f878
commit f245ff74a8
72 changed files with 325 additions and 441 deletions

View file

@ -1,5 +1,6 @@
import { dataSource } from "../../../data-source";
import { communication } from "../../../entity/club/member/communication";
import DatabaseActionException from "../../../exceptions/databaseActionException";
import InternalException from "../../../exceptions/internalException";
export default abstract class CommunicationService {
@ -21,7 +22,7 @@ export default abstract class CommunicationService {
return res;
})
.catch((err) => {
throw new InternalException("member communications not found", err);
throw new DatabaseActionException("SELECT", "memberCommunications", err);
});
}
@ -44,7 +45,7 @@ export default abstract class CommunicationService {
return res;
})
.catch((err) => {
throw new InternalException("member communication not found by id", err);
throw new DatabaseActionException("SELECT", "memberCommunication", err);
});
}

View file

@ -1,5 +1,6 @@
import { dataSource } from "../../../data-source";
import { memberAwards } from "../../../entity/club/member/memberAwards";
import DatabaseActionException from "../../../exceptions/databaseActionException";
import InternalException from "../../../exceptions/internalException";
export default abstract class MemberAwardService {
@ -20,7 +21,7 @@ export default abstract class MemberAwardService {
return res;
})
.catch((err) => {
throw new InternalException("member awards not found", err);
throw new DatabaseActionException("SELECT", "memberAwards", err);
});
}
@ -42,7 +43,7 @@ export default abstract class MemberAwardService {
return res;
})
.catch((err) => {
throw new InternalException("member award not found by id", err);
throw new DatabaseActionException("SELECT", "memberAwards", err);
});
}
}

View file

@ -1,5 +1,6 @@
import { dataSource } from "../../../data-source";
import { memberExecutivePositions } from "../../../entity/club/member/memberExecutivePositions";
import DatabaseActionException from "../../../exceptions/databaseActionException";
import InternalException from "../../../exceptions/internalException";
export default abstract class MemberExecutivePositionService {
@ -21,7 +22,7 @@ export default abstract class MemberExecutivePositionService {
return res;
})
.catch((err) => {
throw new InternalException("member executivePositions not found", err);
throw new DatabaseActionException("SELECT", "memberExecutivePositions", err);
});
}
@ -45,7 +46,7 @@ export default abstract class MemberExecutivePositionService {
return res;
})
.catch((err) => {
throw new InternalException("member executivePosition not found by id", err);
throw new DatabaseActionException("SELECT", "memberExecutivePositions", err);
});
}
}

View file

@ -1,5 +1,6 @@
import { dataSource } from "../../../data-source";
import { memberQualifications } from "../../../entity/club/member/memberQualifications";
import DatabaseActionException from "../../../exceptions/databaseActionException";
import InternalException from "../../../exceptions/internalException";
export default abstract class MemberQualificationService {
@ -20,7 +21,7 @@ export default abstract class MemberQualificationService {
return res;
})
.catch((err) => {
throw new InternalException("member qualifications not found", err);
throw new DatabaseActionException("SELECT", "memberQualifications", err);
});
}
@ -42,7 +43,7 @@ export default abstract class MemberQualificationService {
return res;
})
.catch((err) => {
throw new InternalException("member qualification not found by id", err);
throw new DatabaseActionException("SELECT", "memberQualifications", err);
});
}
}

View file

@ -1,6 +1,8 @@
import { SelectQueryBuilder } from "typeorm";
import { dataSource } from "../../../data-source";
import { member } from "../../../entity/club/member/member";
import { membership } from "../../../entity/club/member/membership";
import DatabaseActionException from "../../../exceptions/databaseActionException";
import InternalException from "../../../exceptions/internalException";
import { memberView } from "../../../views/memberView";
@ -22,40 +24,7 @@ export default abstract class MemberService {
noLimit?: boolean;
ids?: Array<string>;
}): Promise<[Array<member>, number]> {
let query = dataSource
.getRepository(member)
.createQueryBuilder("member")
.leftJoinAndMapOne(
"member.firstMembershipEntry",
"member.memberships",
"membership_first",
"membership_first.memberId = member.id AND membership_first.start = (SELECT MIN(m.start) FROM membership m WHERE m.memberId = member.id)"
)
.leftJoinAndMapOne(
"member.lastMembershipEntry",
"member.memberships",
"membership_last",
"membership_last.memberId = member.id AND membership_last.start = (SELECT MAX(m.start) FROM membership m WHERE m.memberId = member.id)"
)
.leftJoinAndSelect("membership_first.status", "status_first")
.leftJoinAndSelect("membership_last.status", "status_last")
.leftJoinAndMapMany(
"member.preferredCommunication",
"member.communications",
"preferredCommunication",
"preferredCommunication.preferred = 1"
)
.leftJoinAndSelect("preferredCommunication.type", "communicationtype_preferred")
.leftJoinAndMapOne(
"member.sendNewsletter",
"member.communications",
"sendNewsletter",
"sendNewsletter.isSendNewsletter = 1"
)
.leftJoinAndSelect("sendNewsletter.type", "communicationtype")
.leftJoinAndMapMany("member.smsAlarming", "member.communications", "smsAlarming", "smsAlarming.isSMSAlarming = 1")
.leftJoinAndSelect("smsAlarming.type", "communicationtype_smsAlarming")
.leftJoinAndSelect("member.salutation", "salutation");
let query = this.applyMemberBaseJoins();
if (search != "") {
search.split(" ").forEach((term, index) => {
@ -90,7 +59,7 @@ export default abstract class MemberService {
return res;
})
.catch((err) => {
throw new InternalException("members not found", err);
throw new DatabaseActionException("SELECT", "member", err);
});
}
@ -100,7 +69,89 @@ export default abstract class MemberService {
* @returns {Promise<member>}
*/
static async getById(id: string): Promise<member> {
return this.applyMemberBaseJoins()
.where("member.id = :id", { id: id })
.getOneOrFail()
.then((res) => {
return res;
})
.catch((err) => {
throw new DatabaseActionException("SELECT", "member", err);
});
}
/**
* @description get member statistics by id
* @param {string} id
* @returns {Promise<memberView>}
*/
static async getStatisticsById(id: string): Promise<memberView> {
return await dataSource
.getRepository(memberView)
.createQueryBuilder("memberView")
.where("memberView.id = :id", { id: id })
.getOneOrFail()
.then((res) => {
return res;
})
.catch((err) => {
throw new DatabaseActionException("SELECT", "memberView", err);
});
}
/**
* @description get members where membership is setz
* @returns {Promise<member>}
*/
static async getByRunningMembership(): Promise<Array<member>> {
return await dataSource
.getRepository(member)
.createQueryBuilder("member")
.leftJoinAndSelect("member.memberships", "membership")
.where("membership.end IS NULL")
.orderBy("member.lastname")
.addOrderBy("member.firstname")
.addOrderBy("member.nameaffix")
.getMany()
.then((res) => {
return res;
})
.catch((err) => {
throw new DatabaseActionException("SELECT", "member", err);
});
}
/**
* @description get newsletter by member by id
* @param {string} id
* @returns {Promise<member>}
*/
static async getNewsletterById(id: string): Promise<member> {
return await dataSource
.getRepository(member)
.createQueryBuilder("member")
.leftJoinAndMapOne(
"member.sendNewsletter",
"member.communications",
"sendNewsletter",
"sendNewsletter.isSendNewsletter = 1"
)
.where("member.id = :id", { id: id })
.getOneOrFail()
.then((res) => {
return res;
})
.catch((err) => {
throw new DatabaseActionException("SELECT", "member", err);
});
}
/**
* @description apply member joins to query
* @returns {SelectQueryBuilder<member>}
*/
static applyMemberBaseJoins(): SelectQueryBuilder<member> {
return dataSource
.getRepository(member)
.createQueryBuilder("member")
.leftJoinAndMapOne(
@ -133,80 +184,6 @@ export default abstract class MemberService {
.leftJoinAndSelect("sendNewsletter.type", "communicationtype")
.leftJoinAndMapMany("member.smsAlarming", "member.communications", "smsAlarming", "smsAlarming.isSMSAlarming = 1")
.leftJoinAndSelect("smsAlarming.type", "communicationtype_smsAlarming")
.leftJoinAndSelect("member.salutation", "salutation")
.where("member.id = :id", { id: id })
.getOneOrFail()
.then((res) => {
return res;
})
.catch((err) => {
throw new InternalException("member not found by id", err);
});
}
/**
* @description get member statistics by id
* @param {string} id
* @returns {Promise<memberView>}
*/
static async getStatisticsById(id: string): Promise<memberView> {
return await dataSource
.getRepository(memberView)
.createQueryBuilder("memberView")
.where("memberView.id = :id", { id: id })
.getOneOrFail()
.then((res) => {
return res;
})
.catch((err) => {
throw new InternalException("memberView not found by id", err);
});
}
/**
* @description get members where membership is setz
* @returns {Promise<member>}
*/
static async getByRunningMembership(): Promise<Array<member>> {
return await dataSource
.getRepository(member)
.createQueryBuilder("member")
.leftJoinAndSelect("member.memberships", "membership")
.where("membership.end IS NULL")
.orderBy("member.lastname")
.addOrderBy("member.firstname")
.addOrderBy("member.nameaffix")
.getMany()
.then((res) => {
return res;
})
.catch((err) => {
throw new InternalException("member not found by id", err);
});
}
/**
* @description get newsletter by member by id
* @param {string} id
* @returns {Promise<member>}
*/
static async getNewsletterById(id: string): Promise<member> {
return await dataSource
.getRepository(member)
.createQueryBuilder("member")
.leftJoinAndMapOne(
"member.sendNewsletter",
"member.communications",
"sendNewsletter",
"sendNewsletter.isSendNewsletter = 1"
)
.where("member.id = :id", { id: id })
.getOneOrFail()
.then((res) => {
return res;
})
.catch((err) => {
throw new InternalException("member not found by id", err);
});
.leftJoinAndSelect("member.salutation", "salutation");
}
}

View file

@ -1,5 +1,6 @@
import { dataSource } from "../../../data-source";
import { membership } from "../../../entity/club/member/membership";
import DatabaseActionException from "../../../exceptions/databaseActionException";
import InternalException from "../../../exceptions/internalException";
import { membershipView } from "../../../views/membershipsView";
@ -21,7 +22,7 @@ export default abstract class MembershipService {
return res;
})
.catch((err) => {
throw new InternalException("member memberships not found", err);
throw new DatabaseActionException("SELECT", "membershis", err);
});
}
@ -43,7 +44,7 @@ export default abstract class MembershipService {
return res;
})
.catch((err) => {
throw new InternalException("member membership not found by id", err);
throw new DatabaseActionException("SELECT", "membership", err);
});
}
@ -62,7 +63,7 @@ export default abstract class MembershipService {
return res;
})
.catch((err) => {
throw new InternalException("membershipView not found by id", err);
throw new DatabaseActionException("SELECT", "membershipView", err);
});
}
}