enhance: provide latest inserted internal Id

This commit is contained in:
Julian Krauser 2025-04-30 12:22:38 +02:00
parent a827185bf1
commit a6229bb77c
6 changed files with 83 additions and 5 deletions

View file

@ -1,4 +1,4 @@
import { Brackets, Like, SelectQueryBuilder } from "typeorm";
import { Brackets, Like, Not, SelectQueryBuilder } from "typeorm";
import { dataSource } from "../../../data-source";
import { member } from "../../../entity/club/member/member";
import { membership } from "../../../entity/club/member/membership";
@ -31,9 +31,12 @@ export default abstract class MemberService {
let searchBits = search.split(" ");
if (searchBits.length < 2) {
query = query.where(`member.firstname LIKE :searchQuery OR member.lastname LIKE :searchQuery`, {
searchQuery: `%${searchBits[0]}%`,
});
query = query.where(
`member.firstname LIKE :searchQuery OR member.lastname LIKE :searchQuery OR member.internalId LIKE :searchQuery`,
{
searchQuery: `%${searchBits[0]}%`,
}
);
} else {
searchBits
.flatMap((v, i) => searchBits.slice(i + 1).map((w) => [v, w]))
@ -157,6 +160,28 @@ export default abstract class MemberService {
});
}
/**
* @description get latest inserted memberId
* @returns {Promise<string>}
*/
static async getLatestInternalId(): Promise<string> {
return await dataSource
.getRepository(member)
.createQueryBuilder("member")
.where("member.internalId IS NOT NULL")
.andWhere({ internalId: Not("") })
.orderBy("member.createdAt", "DESC")
.addOrderBy("member.internalId", "DESC")
.limit(1)
.getOne()
.then((res) => {
return res?.internalId ?? "";
})
.catch((err) => {
throw new DatabaseActionException("SELECT", "memberId", err);
});
}
/**
* @description apply member joins to query
* @returns {SelectQueryBuilder<member>}