ff-admin-server/src/views/memberQualificationsView.ts

54 lines
1.5 KiB
TypeScript
Raw Normal View History

2024-12-18 12:55:03 +01:00
import { DataSource, ViewColumn, ViewEntity } from "typeorm";
2025-01-05 14:14:00 +01:00
import { memberQualifications } from "../entity/club/member/memberQualifications";
2024-12-18 12:55:03 +01:00
import { Salutation } from "../enums/salutation";
@ViewEntity({
expression: (datasource: DataSource) =>
datasource
.getRepository(memberQualifications)
.createQueryBuilder("memberQualifications")
.select("qualification.id", "qualificationId")
.addSelect("qualification.qualification", "qualification")
.addSelect("member.id", "memberId")
.addSelect("member.salutation", "memberSalutation")
.addSelect("member.firstname", "memberFirstname")
.addSelect("member.lastname", "memberLastname")
.addSelect("member.nameaffix", "memberNameaffix")
.addSelect("member.birthdate", "memberBirthdate")
.addSelect(
"SUM(TIMESTAMPDIFF(DAY, memberQualifications.start, COALESCE(memberQualifications.end, CURRENT_DATE)))",
"durationInDays"
)
.leftJoin("memberQualifications.qualification", "qualification")
.leftJoin("memberQualifications.member", "member")
.groupBy("qualification.id"),
})
export class memberQualificationsView {
@ViewColumn()
durationInDays: number;
@ViewColumn()
qualification: string;
@ViewColumn()
qualificationId: number;
@ViewColumn()
memberId: number;
@ViewColumn()
memberSalutation: Salutation;
@ViewColumn()
memberFirstname: string;
@ViewColumn()
memberLastname: string;
@ViewColumn()
memberNameaffix: string;
@ViewColumn()
memberBirthdate: Date;
}