member tables

This commit is contained in:
Julian Krauser 2024-09-14 11:32:34 +02:00
parent 75fb556796
commit 10db9a40f4
14 changed files with 483 additions and 26 deletions

View file

@ -1,5 +1,5 @@
import { Column, Entity, OneToMany, PrimaryColumn } from "typeorm";
//import { memberAwards } from "./memberAwards";
import { memberAwards } from "./memberAwards";
@Entity()
export class award {
@ -9,8 +9,6 @@ export class award {
@Column({ type: "varchar", length: 255 })
award: string;
// @OneToMany(() => memberAwards, (member) => member.award, {
// onDelete: "RESTRICT",
// })
// members: memberAwards[];
@OneToMany(() => memberAwards, (member) => member.award)
members: memberAwards[];
}

View file

@ -1,5 +1,5 @@
import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn } from "typeorm";
//import { member } from "./member";
import { member } from "./member";
import { communicationType } from "./communicationType";
@Entity()
@ -33,8 +33,10 @@ export class communication {
})
type: communicationType;
// @ManyToOne(() => member, (member) => member.awards, {
// onDelete: "RESTRICT",
// })
// member: member;
@ManyToOne(() => member, (member) => member.awards, {
nullable: false,
onDelete: "CASCADE",
onUpdate: "RESTRICT",
})
member: member;
}

View file

@ -24,8 +24,6 @@ export class communicationType {
})
useColumns: Array<string>;
@OneToMany(() => communication, (communication) => communication.type, {
onDelete: "RESTRICT",
})
@OneToMany(() => communication, (communication) => communication.type)
communications: communication[];
}

View file

@ -1,5 +1,5 @@
import { Column, Entity, OneToMany, PrimaryColumn } from "typeorm";
//import { memberExecutivePositions } from "./memberExecutivePositions";
import { memberExecutivePositions } from "./memberExecutivePositions";
@Entity()
export class executivePosition {
@ -9,8 +9,6 @@ export class executivePosition {
@Column({ type: "varchar", length: 255 })
position: string;
// @OneToMany(() => memberExecutivePositions, (memberExecutivePositions) => memberExecutivePositions.executivePosition, {
// onDelete: "RESTRICT",
// })
// members: memberExecutivePositions[];
@OneToMany(() => memberExecutivePositions, (memberExecutivePositions) => memberExecutivePositions.executivePosition)
members: memberExecutivePositions[];
}

51
src/entity/member.ts Normal file
View file

@ -0,0 +1,51 @@
import { Column, Entity, JoinColumn, ManyToOne, OneToMany, OneToOne, PrimaryColumn } from "typeorm";
import { Salutation } from "../enums/salutation";
import { membership } from "./membership";
import { memberAwards } from "./memberAwards";
import { memberQualifications } from "./memberQualifications";
import { memberExecutivePositions } from "./memberExecutivePositions";
import { communication } from "./communication";
@Entity()
export class member {
@PrimaryColumn({ generated: "increment", type: "int" })
id: number;
@Column({ type: "enum", enum: Salutation, default: Salutation.none })
salutation: Salutation;
@Column({ type: "varchar", length: 255 })
firstname: string;
@Column({ type: "varchar", length: 255 })
lastname: string;
@Column({ type: "varchar", length: 255 })
nameaffix: string;
@Column({ type: "date" })
birthdate: Date;
@OneToMany(() => communication, (communications) => communications.member)
communications: communication;
@OneToOne(() => communication, {
nullable: true,
onDelete: "SET NULL",
onUpdate: "RESTRICT",
})
@JoinColumn()
sendNewsletter?: communication;
@OneToMany(() => membership, (membership) => membership.member)
memberships: membership[];
@OneToMany(() => memberAwards, (awards) => awards.member)
awards: memberAwards[];
@OneToMany(() => memberExecutivePositions, (executivePositions) => executivePositions.member)
positions: memberExecutivePositions[];
@OneToMany(() => memberQualifications, (qualifications) => qualifications.member)
qualifications: memberQualifications[];
}

View file

@ -0,0 +1,32 @@
import { Column, Entity, ManyToOne, PrimaryColumn } from "typeorm";
import { member } from "./member";
import { award } from "./award";
@Entity()
export class memberAwards {
@PrimaryColumn({ generated: "increment", type: "int" })
id: number;
@Column({ type: "boolean", default: true })
given: boolean;
@Column({ type: "varchar", length: 255, nullable: true })
note?: string;
@Column({ type: "date" })
date: Date;
@ManyToOne(() => member, (member) => member.awards, {
nullable: false,
onDelete: "CASCADE",
onUpdate: "RESTRICT",
})
member: member;
@ManyToOne(() => award, (award) => award.members, {
nullable: false,
onDelete: "RESTRICT",
onUpdate: "RESTRICT",
})
award: award;
}

View file

@ -0,0 +1,32 @@
import { Column, Entity, ManyToOne, PrimaryColumn } from "typeorm";
import { member } from "./member";
import { executivePosition } from "./executivePosition";
@Entity()
export class memberExecutivePositions {
@PrimaryColumn({ generated: "increment", type: "int" })
id: number;
@Column({ type: "varchar", length: 255, nullable: true })
note?: string;
@Column({ type: "date" })
start: Date;
@Column({ type: "date", nullable: true })
end?: Date;
@ManyToOne(() => member, (member) => member.awards, {
nullable: false,
onDelete: "CASCADE",
onUpdate: "RESTRICT",
})
member: member;
@ManyToOne(() => executivePosition, (executivePosition) => executivePosition.members, {
nullable: false,
onDelete: "RESTRICT",
onUpdate: "RESTRICT",
})
executivePosition: executivePosition;
}

View file

@ -0,0 +1,35 @@
import { Column, Entity, ManyToOne, PrimaryColumn } from "typeorm";
import { member } from "./member";
import { qualification } from "./qualification";
@Entity()
export class memberQualifications {
@PrimaryColumn({ generated: "increment", type: "int" })
id: number;
@Column({ type: "varchar", length: 255, nullable: true })
note?: string;
@Column({ type: "date" })
start: Date;
@Column({ type: "date", nullable: true })
end?: Date;
@Column({ type: "varchar", length: 255, nullable: true })
terminationReason?: string;
@ManyToOne(() => member, (member) => member.awards, {
nullable: false,
onDelete: "CASCADE",
onUpdate: "RESTRICT",
})
member: member;
@ManyToOne(() => qualification, (qualification) => qualification.members, {
nullable: false,
onDelete: "RESTRICT",
onUpdate: "RESTRICT",
})
qualification: qualification;
}

37
src/entity/membership.ts Normal file
View file

@ -0,0 +1,37 @@
import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn } from "typeorm";
import { member } from "./member";
import { membershipStatus } from "./membershipStatus";
@Entity()
export class membership {
@PrimaryColumn({ generated: "increment", type: "int" })
id: number;
@Column({ type: "varchar", length: 255, unique: true, nullable: true })
internalId?: string;
@Column({ type: "date" })
start: Date;
@Column({ type: "date", nullable: true })
end?: Date;
@Column({ type: "varchar", length: 255, nullable: true })
terminationReason?: string;
@ManyToOne(() => member, (member) => member.memberships, {
nullable: false,
onDelete: "CASCADE",
onUpdate: "RESTRICT",
})
@JoinColumn()
member: member;
@ManyToOne(() => membershipStatus, (membershipStatus) => membershipStatus.memberships, {
nullable: false,
onDelete: "RESTRICT",
onUpdate: "RESTRICT",
})
@JoinColumn()
status: membershipStatus;
}

View file

@ -1,5 +1,5 @@
import { Column, Entity, OneToMany, PrimaryColumn } from "typeorm";
//import { membership } from "./membership";
import { membership } from "./membership";
@Entity()
export class membershipStatus {
@ -9,6 +9,6 @@ export class membershipStatus {
@Column({ type: "varchar", length: 255 })
status: string;
// @OneToMany(() => membership, (membership) => membership.status)
// memberships: membership[];
@OneToMany(() => membership, (membership) => membership.status)
memberships: membership[];
}

View file

@ -1,5 +1,5 @@
import { Column, Entity, OneToMany, PrimaryColumn } from "typeorm";
//import { memberQualifications } from "./memberQualifications";
import { memberQualifications } from "./memberQualifications";
@Entity()
export class qualification {
@ -12,8 +12,6 @@ export class qualification {
@Column({ type: "varchar", length: 255, nullable: true, default: null })
description?: string;
// @OneToMany(() => memberQualifications, (memberQualifications) => memberQualifications.qualification, {
// onDelete: "RESTRICT",
// })
// members: memberQualifications[];
@OneToMany(() => memberQualifications, (memberQualifications) => memberQualifications.qualification)
members: memberQualifications[];
}