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

47 lines
1.2 KiB
TypeScript

import { DataSource, ViewColumn, ViewEntity } from "typeorm";
import { member } from "../entity/club/member/member";
@ViewEntity({
expression: (datasource: DataSource) =>
datasource
.getRepository(member)
.createQueryBuilder("member")
.select("member.id", "id")
.addSelect("member.firstname", "firstname")
.addSelect("member.lastname", "lastname")
.addSelect("member.nameaffix", "nameaffix")
.addSelect("member.birthdate", "birthdate")
.addSelect("salutation.salutation", "salutation")
.addSelect("TIMESTAMPDIFF(YEAR, member.birthdate, CURDATE())", "todayAge")
.addSelect("YEAR(CURDATE()) - YEAR(member.birthdate)", "ageThisYear")
.addSelect("CONCAT('_', FROM_DAYS(TIMESTAMPDIFF(DAY, member.birthdate, CURDATE())))", "exactAge")
.leftJoin("member.salutation", "salutation"),
})
export class memberView {
@ViewColumn()
id: string;
@ViewColumn()
salutation: string;
@ViewColumn()
firstname: string;
@ViewColumn()
lastname: string;
@ViewColumn()
nameaffix: string;
@ViewColumn()
birthdate: Date;
@ViewColumn()
todayAge: number;
@ViewColumn()
ageThisYear: number;
@ViewColumn()
exactAge: string;
}