import { Table, TableForeignKey } from "typeorm"; import { getTypeByORM } from "../ormHelper"; export const invite_table = new Table({ name: "invite", columns: [ { name: "mail", type: getTypeByORM("varchar"), length: "255", isPrimary: true }, { name: "token", type: getTypeByORM("varchar"), length: "255", isNullable: false }, { name: "username", type: getTypeByORM("varchar"), length: "255", isNullable: false }, { name: "firstname", type: getTypeByORM("varchar"), length: "255", isNullable: false }, { name: "lastname", type: getTypeByORM("varchar"), length: "255", isNullable: false }, { name: "secret", type: getTypeByORM("varchar"), length: "255", isNullable: false }, ], }); export const role_table = new Table({ name: "role", columns: [ { name: "id", type: getTypeByORM("int"), isPrimary: true, isGenerated: true, generationStrategy: "increment", }, { name: "role", type: getTypeByORM("varchar"), length: "255", isNullable: false, isUnique: true }, ], }); export const role_permission_table = new Table({ name: "role_permission", columns: [ { name: "roleId", type: getTypeByORM("int"), isPrimary: true }, { name: "permission", type: getTypeByORM("varchar"), length: "255", isPrimary: true }, ], foreignKeys: [ new TableForeignKey({ columnNames: ["roleId"], referencedColumnNames: ["id"], referencedTableName: "role", onDelete: "CASCADE", onUpdate: "RESTRICT", }), ], }); export const user_table = new Table({ name: "user", columns: [ { name: "id", type: getTypeByORM("varchar"), length: "36", isPrimary: true, isGenerated: true, generationStrategy: "uuid", }, { name: "mail", type: getTypeByORM("varchar"), length: "255", isNullable: false, isUnique: true }, { name: "username", type: getTypeByORM("varchar"), length: "255", isNullable: false, isUnique: true }, { name: "firstname", type: getTypeByORM("varchar"), length: "255", isNullable: false }, { name: "lastname", type: getTypeByORM("varchar"), length: "255", isNullable: false }, { name: "secret", type: getTypeByORM("varchar"), length: "255", isNullable: false }, { name: "static", type: getTypeByORM("boolean"), isNullable: false, default: false }, { name: "isOwner", type: getTypeByORM("boolean"), isNullable: false, default: false }, ], }); export const user_roles_table = new Table({ name: "user_roles", columns: [ { name: "userId", type: getTypeByORM("varchar"), isPrimary: true }, { name: "roleId", type: getTypeByORM("int"), isPrimary: true }, ], foreignKeys: [ new TableForeignKey({ columnNames: ["userId"], referencedColumnNames: ["id"], referencedTableName: "user", onDelete: "CASCADE", onUpdate: "RESTRICT", }), new TableForeignKey({ columnNames: ["roleId"], referencedColumnNames: ["id"], referencedTableName: "role", onDelete: "CASCADE", onUpdate: "RESTRICT", }), ], }); export const user_permission_table = new Table({ name: "user_permission", columns: [ { name: "userId", type: getTypeByORM("varchar"), isPrimary: true }, { name: "permission", type: getTypeByORM("varchar"), length: "255", isPrimary: true }, ], foreignKeys: [ new TableForeignKey({ columnNames: ["userId"], referencedColumnNames: ["id"], referencedTableName: "user", onDelete: "CASCADE", onUpdate: "RESTRICT", }), ], }); export const refresh_table = new Table({ name: "refresh", columns: [ { name: "token", type: getTypeByORM("varchar"), length: "255", isPrimary: true, isNullable: false }, { name: "expiry", type: getTypeByORM("datetime"), isNullable: false }, { name: "userId", type: getTypeByORM("varchar"), isPrimary: true, isNullable: false }, ], foreignKeys: [ new TableForeignKey({ columnNames: ["userId"], referencedColumnNames: ["id"], referencedTableName: "user", onDelete: "CASCADE", onUpdate: "RESTRICT", }), ], }); export const webapi_table = new Table({ name: "webapi", columns: [ { name: "id", type: getTypeByORM("int"), isPrimary: true, isGenerated: true, generationStrategy: "increment", }, { name: "token", type: getTypeByORM("varchar"), length: "255", isNullable: false, isUnique: true }, { name: "title", type: getTypeByORM("varchar"), length: "255", isNullable: false, isUnique: true }, { name: "createdAt", type: getTypeByORM("datetime"), isNullable: false, default: "CURRENT_TIMESTAMP(6)" }, { name: "lastUsage", type: getTypeByORM("datetime"), isNullable: true, default: null }, { name: "expiry", type: getTypeByORM("date"), isNullable: true, default: null }, ], }); export const webapi_permission_table = new Table({ name: "webapi_permission", columns: [ { name: "webapiId", type: getTypeByORM("int"), isPrimary: true }, { name: "permission", type: getTypeByORM("varchar"), length: "255", isPrimary: true }, ], foreignKeys: [ new TableForeignKey({ columnNames: ["webapiId"], referencedColumnNames: ["id"], referencedTableName: "webapi", onDelete: "CASCADE", onUpdate: "RESTRICT", }), ], }); export const reset_table = new Table({ name: "reset", columns: [ { name: "mail", type: getTypeByORM("varchar"), length: "255", isPrimary: true }, { name: "token", type: getTypeByORM("varchar"), length: "255", isNullable: false }, { name: "username", type: getTypeByORM("varchar"), length: "255", isNullable: false }, { name: "secret", type: getTypeByORM("varchar"), length: "255", isNullable: false }, ], });