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

64 lines
1.6 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 { member } from "../entity/club/member/member";
import { DB_TYPE } from "../env.defaults";
2024-12-18 12:55:03 +01:00
@ViewEntity({
expression: (datasource: DataSource) =>
datasource
.getRepository(member)
.createQueryBuilder("member")
2024-12-18 22:27:33 +01:00
.select("member.id", "id")
.addSelect("member.firstname", "firstname")
.addSelect("member.lastname", "lastname")
.addSelect("member.nameaffix", "nameaffix")
.addSelect("member.birthdate", "birthdate")
2025-01-25 10:20:57 +01:00
.addSelect("salutation.salutation", "salutation")
.addSelect(
DB_TYPE == "postgres"
? `DATE_PART('year', AGE(CURRENT_DATE, member.birthdate))`
: "TIMESTAMPDIFF(YEAR, member.birthdate, CURDATE())",
"todayAge"
)
.addSelect(
DB_TYPE == "postgres"
? `EXTRACT(YEAR FROM CURRENT_DATE) - EXTRACT(YEAR FROM member.birthdate)`
: "YEAR(CURDATE()) - YEAR(member.birthdate)",
"ageThisYear"
)
.addSelect(
DB_TYPE == "postgres"
? `AGE(CURRENT_DATE, member.birthdate)`
: "CONCAT('_', FROM_DAYS(TIMESTAMPDIFF(DAY, member.birthdate, CURDATE())))",
"exactAge"
)
2025-01-25 10:20:57 +01:00
.leftJoin("member.salutation", "salutation"),
2024-12-18 12:55:03 +01:00
})
export class memberView {
@ViewColumn()
2025-01-29 08:53:49 +01:00
id: string;
2024-12-18 12:55:03 +01:00
@ViewColumn()
2025-01-25 10:20:57 +01:00
salutation: string;
2024-12-18 12:55:03 +01:00
@ViewColumn()
firstname: string;
@ViewColumn()
lastname: string;
@ViewColumn()
nameaffix: string;
@ViewColumn()
birthdate: Date;
@ViewColumn()
todayAge: number;
@ViewColumn()
ageThisYear: number;
2025-01-05 16:09:39 +01:00
@ViewColumn()
2025-01-21 14:49:14 +01:00
exactAge: string;
2024-12-18 12:55:03 +01:00
}