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", }), ], });