import { Table, TableForeignKey } from "typeorm"; import { getDefaultByORM, getTypeByORM, isIncrementPrimary, isUUIDPrimary } from "../ormHelper"; export const query_table = new Table({ name: "query", columns: [ { name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary }, { name: "title", ...getTypeByORM("varchar"), isUnique: true }, { name: "query", ...getTypeByORM("text"), default: getDefaultByORM("string") }, { name: "updatedAt", ...getTypeByORM("datetime", false, 6), default: getDefaultByORM("currentTimestamp", 6), onUpdate: getDefaultByORM("currentTimestamp", 6), }, ], }); export const template_table = new Table({ name: "template", columns: [ { name: "id", ...getTypeByORM("int"), ...isIncrementPrimary }, { name: "template", ...getTypeByORM("varchar"), isUnique: true }, { name: "description", ...getTypeByORM("varchar", true) }, { name: "design", ...getTypeByORM("text"), default: getDefaultByORM("string", "{}") }, { name: "html", ...getTypeByORM("text"), default: getDefaultByORM("string") }, ], }); export const template_usage_table = new Table({ name: "template_usage", columns: [ { name: "scope", ...getTypeByORM("varchar"), isPrimary: true }, { name: "headerId", ...getTypeByORM("int", true), default: getDefaultByORM("null") }, { name: "bodyId", ...getTypeByORM("int", true), default: getDefaultByORM("null") }, { name: "footerId", ...getTypeByORM("int", true), default: getDefaultByORM("null") }, { name: "headerHeight", ...getTypeByORM("int", true), default: getDefaultByORM("null") }, { name: "footerHeight", ...getTypeByORM("int", true), default: getDefaultByORM("null") }, ], foreignKeys: [ new TableForeignKey({ columnNames: ["headerId"], referencedColumnNames: ["id"], referencedTableName: "template", onDelete: "RESTRICT", onUpdate: "RESTRICT", }), new TableForeignKey({ columnNames: ["bodyId"], referencedColumnNames: ["id"], referencedTableName: "template", onDelete: "RESTRICT", onUpdate: "RESTRICT", }), new TableForeignKey({ columnNames: ["footerId"], referencedColumnNames: ["id"], referencedTableName: "template", onDelete: "RESTRICT", onUpdate: "RESTRICT", }), ], });