newsletter CRUD & pdf
This commit is contained in:
parent
e9b29f8acf
commit
01ce3fdd39
31 changed files with 1185 additions and 23 deletions
129
src/migrations/1735118780511-newsletter.ts
Normal file
129
src/migrations/1735118780511-newsletter.ts
Normal file
|
@ -0,0 +1,129 @@
|
|||
import { MigrationInterface, QueryRunner, Table, TableForeignKey } from "typeorm";
|
||||
import { DB_TYPE } from "../env.defaults";
|
||||
|
||||
export class Newsletter1735118780511 implements MigrationInterface {
|
||||
name = "Newsletter1735118780511";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
const variableType_int = DB_TYPE == "mysql" ? "int" : "integer";
|
||||
|
||||
await queryRunner.createTable(
|
||||
new Table({
|
||||
name: "newsletter_dates",
|
||||
columns: [
|
||||
{ name: "newsletterId", type: variableType_int, isPrimary: true },
|
||||
{ name: "calendarId", type: "varchar", length: "255", isPrimary: true },
|
||||
{ name: "diffTitle", type: "varchar", length: "255", isNullable: true },
|
||||
{ name: "diffDescription", type: "text", isNullable: true },
|
||||
],
|
||||
}),
|
||||
true
|
||||
);
|
||||
|
||||
await queryRunner.createTable(
|
||||
new Table({
|
||||
name: "newsletter_recipients",
|
||||
columns: [
|
||||
{ name: "newsletterId", type: variableType_int, isPrimary: true },
|
||||
{ name: "memberId", type: variableType_int, isPrimary: true },
|
||||
{ name: "addedManually", type: "tinyint", default: "0" },
|
||||
],
|
||||
}),
|
||||
true
|
||||
);
|
||||
|
||||
await queryRunner.createTable(
|
||||
new Table({
|
||||
name: "newsletter",
|
||||
columns: [
|
||||
{ name: "id", type: variableType_int, isPrimary: true, isGenerated: true, generationStrategy: "increment" },
|
||||
{ name: "title", type: "varchar", length: "255" },
|
||||
{ name: "description", type: "varchar", length: "255", default: "''" },
|
||||
{ name: "newsletterTitle", type: "varchar", length: "255", default: "''" },
|
||||
{ name: "newsletterText", type: "text", default: "''" },
|
||||
{ name: "newsletterSignatur", type: "varchar", length: "255", default: "''" },
|
||||
{ name: "isSent", type: "tinyint", default: "0" },
|
||||
{ name: "recipientsByQueryId", type: variableType_int, isNullable: true },
|
||||
],
|
||||
}),
|
||||
true
|
||||
);
|
||||
|
||||
await queryRunner.createForeignKey(
|
||||
"newsletter_dates",
|
||||
new TableForeignKey({
|
||||
columnNames: ["newsletterId"],
|
||||
referencedColumnNames: ["id"],
|
||||
referencedTableName: "newsletter",
|
||||
onDelete: "CASCADE",
|
||||
onUpdate: "RESTRICT",
|
||||
})
|
||||
);
|
||||
|
||||
await queryRunner.createForeignKey(
|
||||
"newsletter_dates",
|
||||
new TableForeignKey({
|
||||
columnNames: ["calendarId"],
|
||||
referencedColumnNames: ["id"],
|
||||
referencedTableName: "calendar",
|
||||
onDelete: "RESTRICT",
|
||||
onUpdate: "RESTRICT",
|
||||
})
|
||||
);
|
||||
|
||||
await queryRunner.createForeignKey(
|
||||
"newsletter_recipients",
|
||||
new TableForeignKey({
|
||||
columnNames: ["newsletterId"],
|
||||
referencedColumnNames: ["id"],
|
||||
referencedTableName: "newsletter",
|
||||
onDelete: "CASCADE",
|
||||
onUpdate: "RESTRICT",
|
||||
})
|
||||
);
|
||||
|
||||
await queryRunner.createForeignKey(
|
||||
"newsletter_recipients",
|
||||
new TableForeignKey({
|
||||
columnNames: ["memberId"],
|
||||
referencedColumnNames: ["id"],
|
||||
referencedTableName: "member",
|
||||
onDelete: "CASCADE",
|
||||
onUpdate: "RESTRICT",
|
||||
})
|
||||
);
|
||||
|
||||
await queryRunner.createForeignKey(
|
||||
"newsletter",
|
||||
new TableForeignKey({
|
||||
columnNames: ["recipientsByQueryId"],
|
||||
referencedColumnNames: ["id"],
|
||||
referencedTableName: "query",
|
||||
onDelete: "CASCADE",
|
||||
onUpdate: "RESTRICT",
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
const tableN = await queryRunner.getTable("newsletter");
|
||||
const tableNR = await queryRunner.getTable("newsletter_recipients");
|
||||
const tableND = await queryRunner.getTable("newsletter_dates");
|
||||
|
||||
const foreignKeyN = tableN.foreignKeys.find((fk) => fk.columnNames.indexOf("recipientsByQueryId") !== -1);
|
||||
const foreignKeyNR = tableNR.foreignKeys.find((fk) => fk.columnNames.indexOf("newsletterId") !== -1);
|
||||
const foreignKeyNR2 = tableNR.foreignKeys.find((fk) => fk.columnNames.indexOf("memberId") !== -1);
|
||||
const foreignKeyND1 = tableND.foreignKeys.find((fk) => fk.columnNames.indexOf("newsletterId") !== -1);
|
||||
const foreignKeyND2 = tableND.foreignKeys.find((fk) => fk.columnNames.indexOf("calendarId") !== -1);
|
||||
|
||||
await queryRunner.dropForeignKey("newsletter", foreignKeyN);
|
||||
await queryRunner.dropForeignKey("newsletter_recipients", foreignKeyNR);
|
||||
await queryRunner.dropForeignKey("newsletter_recipients", foreignKeyNR2);
|
||||
await queryRunner.dropForeignKey("newsletter_dates", foreignKeyND1);
|
||||
await queryRunner.dropForeignKey("newsletter_dates", foreignKeyND2);
|
||||
|
||||
await queryRunner.dropTable("newsletter");
|
||||
await queryRunner.dropTable("newsletter_recipients");
|
||||
await queryRunner.dropTable("newsletter_dates");
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue