98 lines
3.2 KiB
TypeScript
98 lines
3.2 KiB
TypeScript
import { Table, TableForeignKey, TableUnique } from "typeorm";
|
|
import { getDefaultByORM, getTypeByORM, isIncrementPrimary } from "../ormHelper";
|
|
|
|
export const newsletter_table = new Table({
|
|
name: "newsletter",
|
|
columns: [
|
|
{ name: "id", ...getTypeByORM("int"), ...isIncrementPrimary },
|
|
{ name: "title", ...getTypeByORM("varchar") },
|
|
{ name: "description", ...getTypeByORM("varchar"), default: getDefaultByORM("string") },
|
|
{ name: "newsletterTitle", ...getTypeByORM("text"), default: getDefaultByORM("string") },
|
|
{ name: "newsletterText", ...getTypeByORM("text"), default: getDefaultByORM("string") },
|
|
{ name: "newsletterSignatur", ...getTypeByORM("text"), default: getDefaultByORM("string") },
|
|
{ name: "isSent", ...getTypeByORM("boolean"), default: getDefaultByORM("boolean", false) },
|
|
{ name: "recipientsByQueryId", ...getTypeByORM("uuid", true) },
|
|
{ name: "createdAt", ...getTypeByORM("datetime", false, 6), default: getDefaultByORM("currentTimestamp", 6) },
|
|
],
|
|
foreignKeys: [
|
|
new TableForeignKey({
|
|
columnNames: ["recipientsByQueryId"],
|
|
referencedColumnNames: ["id"],
|
|
referencedTableName: "query",
|
|
onDelete: "CASCADE",
|
|
onUpdate: "RESTRICT",
|
|
}),
|
|
],
|
|
uniques: [
|
|
new TableUnique({
|
|
columnNames: ["title"],
|
|
}),
|
|
],
|
|
});
|
|
|
|
export const newsletter_dates_table = new Table({
|
|
name: "newsletter_dates",
|
|
columns: [
|
|
{ name: "newsletterId", ...getTypeByORM("int"), isPrimary: true },
|
|
{ name: "calendarId", ...getTypeByORM("uuid"), isPrimary: true },
|
|
{ name: "diffTitle", ...getTypeByORM("varchar"), isNullable: true },
|
|
{ name: "diffDescription", ...getTypeByORM("text", true) },
|
|
],
|
|
foreignKeys: [
|
|
new TableForeignKey({
|
|
columnNames: ["newsletterId"],
|
|
referencedColumnNames: ["id"],
|
|
referencedTableName: "newsletter",
|
|
onDelete: "CASCADE",
|
|
onUpdate: "RESTRICT",
|
|
}),
|
|
new TableForeignKey({
|
|
columnNames: ["calendarId"],
|
|
referencedColumnNames: ["id"],
|
|
referencedTableName: "calendar",
|
|
onDelete: "RESTRICT",
|
|
onUpdate: "RESTRICT",
|
|
}),
|
|
],
|
|
});
|
|
|
|
export const newsletter_recipients_table = new Table({
|
|
name: "newsletter_recipients",
|
|
columns: [
|
|
{ name: "newsletterId", ...getTypeByORM("int"), isPrimary: true },
|
|
{ name: "memberId", ...getTypeByORM("uuid"), isPrimary: true },
|
|
],
|
|
foreignKeys: [
|
|
new TableForeignKey({
|
|
columnNames: ["newsletterId"],
|
|
referencedColumnNames: ["id"],
|
|
referencedTableName: "newsletter",
|
|
onDelete: "CASCADE",
|
|
onUpdate: "RESTRICT",
|
|
}),
|
|
new TableForeignKey({
|
|
columnNames: ["memberId"],
|
|
referencedColumnNames: ["id"],
|
|
referencedTableName: "member",
|
|
onDelete: "CASCADE",
|
|
onUpdate: "RESTRICT",
|
|
}),
|
|
],
|
|
});
|
|
|
|
export const newsletter_config_table = new Table({
|
|
name: "newsletter_config",
|
|
columns: [
|
|
{ name: "comTypeId", ...getTypeByORM("int"), isPrimary: true },
|
|
{ name: "config", ...getTypeByORM("varchar") },
|
|
],
|
|
foreignKeys: [
|
|
new TableForeignKey({
|
|
columnNames: ["comTypeId"],
|
|
referencedColumnNames: ["id"],
|
|
referencedTableName: "communication_type",
|
|
onDelete: "CASCADE",
|
|
onUpdate: "RESTRICT",
|
|
}),
|
|
],
|
|
});
|