import { DataSource, ViewColumn, ViewEntity } from "typeorm"; import { memberQualifications } from "../entity/club/member/memberQualifications"; @ViewEntity({ expression: (datasource: DataSource) => datasource .getRepository(memberQualifications) .createQueryBuilder("memberQualifications") .select("qualification.id", "qualificationId") .addSelect("qualification.qualification", "qualification") .addSelect("member.id", "memberId") .addSelect("member.firstname", "memberFirstname") .addSelect("member.lastname", "memberLastname") .addSelect("member.nameaffix", "memberNameaffix") .addSelect("member.birthdate", "memberBirthdate") .addSelect("salutation.salutation", "memberSalutation") .addSelect( "SUM(TIMESTAMPDIFF(DAY, memberQualifications.start, COALESCE(memberQualifications.end, CURRENT_DATE)))", "durationInDays" ) .leftJoin("memberQualifications.qualification", "qualification") .leftJoin("memberQualifications.member", "member") .leftJoin("member.salutation", "salutation") .groupBy("qualification.id") .addGroupBy("member.id"), }) export class memberQualificationsView { @ViewColumn() durationInDays: number; @ViewColumn() qualification: string; @ViewColumn() qualificationId: number; @ViewColumn() memberId: string; @ViewColumn() memberSalutation: string; @ViewColumn() memberFirstname: string; @ViewColumn() memberLastname: string; @ViewColumn() memberNameaffix: string; @ViewColumn() memberBirthdate: Date; }