import { Table, TableForeignKey, TableUnique } from "typeorm"; import { getDefaultByORM, getTypeByORM, isIncrementPrimary } from "../ormHelper"; export const protocol_table = new Table({ name: "protocol", columns: [ { name: "id", ...getTypeByORM("int"), ...isIncrementPrimary }, { name: "title", ...getTypeByORM("varchar"), isUnique: true }, { name: "date", ...getTypeByORM("date") }, { name: "starttime", ...getTypeByORM("time", true) }, { name: "endtime", ...getTypeByORM("time", true) }, { name: "summary", ...getTypeByORM("text", true) }, ], }); export const protocol_agenda_table = new Table({ name: "protocol_agenda", columns: [ { name: "id", ...getTypeByORM("int"), ...isIncrementPrimary }, { name: "topic", ...getTypeByORM("varchar") }, { name: "context", ...getTypeByORM("text"), default: getDefaultByORM("string") }, { name: "sort", ...getTypeByORM("int"), default: getDefaultByORM("number", 0) }, { name: "protocolId", ...getTypeByORM("int") }, ], foreignKeys: [ new TableForeignKey({ columnNames: ["protocolId"], referencedColumnNames: ["id"], referencedTableName: "protocol", onDelete: "CASCADE", onUpdate: "RESTRICT", }), ], }); export const protocol_decision_table = new Table({ name: "protocol_decision", columns: [ { name: "id", ...getTypeByORM("int"), ...isIncrementPrimary }, { name: "topic", ...getTypeByORM("varchar") }, { name: "context", ...getTypeByORM("text"), default: getDefaultByORM("string") }, { name: "sort", ...getTypeByORM("int"), default: getDefaultByORM("number", 0) }, { name: "protocolId", ...getTypeByORM("int") }, ], foreignKeys: [ new TableForeignKey({ columnNames: ["protocolId"], referencedColumnNames: ["id"], referencedTableName: "protocol", onDelete: "CASCADE", onUpdate: "RESTRICT", }), ], }); export const protocol_presence_table = new Table({ name: "protocol_presence", columns: [ { name: "memberId", ...getTypeByORM("uuid"), isPrimary: true }, { name: "protocolId", ...getTypeByORM("int"), isPrimary: true }, { name: "absent", ...getTypeByORM("boolean"), default: getDefaultByORM("boolean", false) }, { name: "excused", ...getTypeByORM("boolean"), default: getDefaultByORM("boolean", true) }, ], foreignKeys: [ new TableForeignKey({ columnNames: ["protocolId"], referencedColumnNames: ["id"], referencedTableName: "protocol", onDelete: "CASCADE", onUpdate: "RESTRICT", }), new TableForeignKey({ columnNames: ["memberId"], referencedColumnNames: ["id"], referencedTableName: "member", onDelete: "CASCADE", onUpdate: "RESTRICT", }), ], }); export const protocol_voting_table = new Table({ name: "protocol_voting", columns: [ { name: "id", ...getTypeByORM("int"), ...isIncrementPrimary }, { name: "topic", ...getTypeByORM("varchar") }, { name: "context", ...getTypeByORM("text"), default: getDefaultByORM("string") }, { name: "favour", ...getTypeByORM("int"), default: getDefaultByORM("number", 0) }, { name: "abstain", ...getTypeByORM("int"), default: getDefaultByORM("number", 0) }, { name: "against", ...getTypeByORM("int"), default: getDefaultByORM("number", 0) }, { name: "sort", ...getTypeByORM("int"), default: getDefaultByORM("number", 0) }, { name: "protocolId", ...getTypeByORM("int") }, ], foreignKeys: [ new TableForeignKey({ columnNames: ["protocolId"], referencedColumnNames: ["id"], referencedTableName: "protocol", onDelete: "CASCADE", onUpdate: "RESTRICT", }), ], }); export const protocol_printout_table = new Table({ name: "protocol_printout", columns: [ { name: "id", ...getTypeByORM("int"), ...isIncrementPrimary }, { name: "title", ...getTypeByORM("varchar") }, { name: "iteration", ...getTypeByORM("int"), default: getDefaultByORM("number", 1) }, { name: "filename", ...getTypeByORM("varchar") }, { name: "createdAt", ...getTypeByORM("datetime", false, 6), default: getDefaultByORM("currentTimestamp", 6) }, { name: "protocolId", ...getTypeByORM("int") }, ], foreignKeys: [ new TableForeignKey({ columnNames: ["protocolId"], referencedColumnNames: ["id"], referencedTableName: "protocol", onDelete: "CASCADE", onUpdate: "RESTRICT", }), ], });