newsletter CRUD & pdf

This commit is contained in:
Julian Krauser 2024-12-25 12:22:28 +01:00
parent e9b29f8acf
commit 01ce3fdd39
31 changed files with 1185 additions and 23 deletions

42
src/entity/newsletter.ts Normal file
View file

@ -0,0 +1,42 @@
import { Column, Entity, ManyToOne, OneToMany, PrimaryColumn } from "typeorm";
import { newsletterDates } from "./newsletterDates";
import { member } from "./member";
import { newsletterRecipients } from "./newsletterRecipients";
import { query } from "./query";
@Entity()
export class newsletter {
@PrimaryColumn({ generated: "increment", type: "int" })
id: number;
@Column({ type: "varchar", length: 255 })
title: string;
@Column({ type: "varchar", length: 255, default: "" })
description: string;
@Column({ type: "varchar", length: 255, default: "" })
newsletterTitle: string;
@Column({ type: "text", default: "" })
newsletterText: string;
@Column({ type: "varchar", length: 255, default: "" })
newsletterSignatur: string;
@Column({ type: "boolean", default: false })
isSent: boolean;
@OneToMany(() => newsletterDates, (dates) => dates.newsletter)
dates: newsletterDates[];
@OneToMany(() => newsletterRecipients, (recipient) => recipient.newsletter)
recipients: newsletterRecipients[];
@ManyToOne(() => query, {
nullable: true,
onDelete: "CASCADE",
onUpdate: "RESTRICT",
})
recipientsByQuery?: query;
}

View file

@ -0,0 +1,32 @@
import { Column, Entity, ManyToOne, PrimaryColumn } from "typeorm";
import { newsletter } from "./newsletter";
import { calendar } from "./calendar";
@Entity()
export class newsletterDates {
@PrimaryColumn({ type: "int" })
newsletterId: number;
@PrimaryColumn({ type: "int" })
calendarId: number;
@Column({ type: "varchar", length: 255, nullable: true })
diffTitle: string | null;
@Column({ type: "text", nullable: true })
diffDescription: string | null;
@ManyToOne(() => newsletter, (newsletter) => newsletter.dates, {
nullable: false,
onDelete: "CASCADE",
onUpdate: "RESTRICT",
})
newsletter: newsletter;
@ManyToOne(() => calendar, {
nullable: false,
onDelete: "RESTRICT",
onUpdate: "RESTRICT",
})
calendar: calendar;
}

View file

@ -0,0 +1,29 @@
import { Column, Entity, ManyToOne, PrimaryColumn } from "typeorm";
import { newsletter } from "./newsletter";
import { member } from "./member";
@Entity()
export class newsletterRecipients {
@PrimaryColumn({ type: "int" })
newsletterId: number;
@PrimaryColumn({ type: "int" })
memberId: number;
@Column({ type: "boolean", default: false })
addedManually: boolean;
@ManyToOne(() => newsletter, (newsletter) => newsletter.recipients, {
nullable: false,
onDelete: "CASCADE",
onUpdate: "RESTRICT",
})
newsletter: newsletter;
@ManyToOne(() => member, {
nullable: false,
onDelete: "CASCADE",
onUpdate: "RESTRICT",
})
member: member;
}