import { DataSource, ViewColumn, ViewEntity } from "typeorm"; import { memberExecutivePositions } from "../entity/memberExecutivePositions"; import { Salutation } from "../enums/salutation"; @ViewEntity({ expression: (datasource: DataSource) => datasource .getRepository(memberExecutivePositions) .createQueryBuilder("memberExecutivePositions") .select("executivePosition.id", "positionId") .addSelect("executivePosition.position", "position") .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, memberExecutivePositions.start, COALESCE(memberExecutivePositions.end, CURRENT_DATE)))", "durationInDays" ) .leftJoin("memberExecutivePositions.executivePosition", "executivePosition") .leftJoin("memberExecutivePositions.member", "member") .groupBy("executivePosition.id"), }) export class memberExecutivePositionsView { @ViewColumn() durationInDays: number; @ViewColumn() position: string; @ViewColumn() positionId: number; @ViewColumn() memberId: number; @ViewColumn() memberSalutation: Salutation; @ViewColumn() memberFirstname: string; @ViewColumn() memberLastname: string; @ViewColumn() memberNameaffix: string; @ViewColumn() memberBirthdate: Date; }