181 lines
5.2 KiB
TypeScript
181 lines
5.2 KiB
TypeScript
import { Table, TableForeignKey, TableIndex, TableUnique } from "typeorm";
|
|
import { getDefaultByORM, getTypeByORM, isIncrementPrimary, isUUIDPrimary } from "../ormHelper";
|
|
import { LoginRoutineEnum } from "../../enums/loginRoutineEnum";
|
|
|
|
export const invite_table = new Table({
|
|
name: "invite",
|
|
columns: [
|
|
{ name: "mail", ...getTypeByORM("varchar"), isPrimary: true },
|
|
{ name: "token", ...getTypeByORM("varchar") },
|
|
{ name: "username", ...getTypeByORM("varchar") },
|
|
{ name: "firstname", ...getTypeByORM("varchar") },
|
|
{ name: "lastname", ...getTypeByORM("varchar") },
|
|
{ name: "secret", ...getTypeByORM("varchar") },
|
|
],
|
|
});
|
|
export const role_table = new Table({
|
|
name: "role",
|
|
columns: [
|
|
{ name: "id", ...getTypeByORM("int"), ...isIncrementPrimary },
|
|
{ name: "role", ...getTypeByORM("varchar") },
|
|
],
|
|
uniques: [
|
|
new TableUnique({
|
|
columnNames: ["role"],
|
|
}),
|
|
],
|
|
});
|
|
|
|
export const role_permission_table = new Table({
|
|
name: "role_permission",
|
|
columns: [
|
|
{ name: "roleId", ...getTypeByORM("int"), isPrimary: true },
|
|
{ name: "permission", ...getTypeByORM("varchar"), 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", ...getTypeByORM("uuid"), ...isUUIDPrimary },
|
|
{ name: "mail", ...getTypeByORM("varchar"), isUnique: true },
|
|
{ name: "username", ...getTypeByORM("varchar"), isUnique: true },
|
|
{ name: "firstname", ...getTypeByORM("varchar") },
|
|
{ name: "lastname", ...getTypeByORM("varchar") },
|
|
{ name: "secret", ...getTypeByORM("text") },
|
|
{ name: "routine", ...getTypeByORM("varchar"), default: getDefaultByORM("string", LoginRoutineEnum.totp) },
|
|
{ name: "isOwner", ...getTypeByORM("boolean"), default: getDefaultByORM("boolean", false) },
|
|
],
|
|
});
|
|
|
|
export const user_roles_table = new Table({
|
|
name: "user_roles",
|
|
columns: [
|
|
{ name: "userId", ...getTypeByORM("uuid"), isPrimary: true },
|
|
{ name: "roleId", ...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",
|
|
}),
|
|
],
|
|
indices: [
|
|
new TableIndex({
|
|
columnNames: ["userId"],
|
|
}),
|
|
new TableIndex({
|
|
columnNames: ["roleId"],
|
|
}),
|
|
],
|
|
});
|
|
|
|
export const user_permission_table = new Table({
|
|
name: "user_permission",
|
|
columns: [
|
|
{ name: "userId", ...getTypeByORM("uuid"), isPrimary: true },
|
|
{ name: "permission", ...getTypeByORM("varchar"), 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", ...getTypeByORM("varchar"), isPrimary: true },
|
|
{ name: "expiry", ...getTypeByORM("datetime", false, 6) },
|
|
{ name: "userId", ...getTypeByORM("uuid"), isPrimary: true },
|
|
],
|
|
foreignKeys: [
|
|
new TableForeignKey({
|
|
columnNames: ["userId"],
|
|
referencedColumnNames: ["id"],
|
|
referencedTableName: "user",
|
|
onDelete: "CASCADE",
|
|
onUpdate: "RESTRICT",
|
|
}),
|
|
],
|
|
});
|
|
|
|
export const webapi_table = new Table({
|
|
name: "webapi",
|
|
columns: [
|
|
{ name: "id", ...getTypeByORM("int"), ...isIncrementPrimary },
|
|
{ name: "token", ...getTypeByORM("text") },
|
|
{ name: "title", ...getTypeByORM("varchar") },
|
|
{ name: "createdAt", ...getTypeByORM("datetime", false, 6), default: getDefaultByORM("currentTimestamp", 6) },
|
|
{ name: "lastUsage", ...getTypeByORM("datetime", true, 6) },
|
|
{ name: "expiry", ...getTypeByORM("date", true) },
|
|
],
|
|
uniques: [
|
|
new TableUnique({
|
|
columnNames: ["token"],
|
|
}),
|
|
new TableUnique({
|
|
columnNames: ["title"],
|
|
}),
|
|
],
|
|
});
|
|
|
|
export const webapi_permission_table = new Table({
|
|
name: "webapi_permission",
|
|
columns: [
|
|
{ name: "webapiId", ...getTypeByORM("int"), isPrimary: true },
|
|
{ name: "permission", ...getTypeByORM("varchar"), 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", ...getTypeByORM("varchar"), isPrimary: true },
|
|
{ name: "token", ...getTypeByORM("varchar") },
|
|
{ name: "username", ...getTypeByORM("varchar") },
|
|
{ name: "secret", ...getTypeByORM("varchar") },
|
|
],
|
|
});
|
|
|
|
export const setting_table = new Table({
|
|
name: "setting",
|
|
columns: [
|
|
{ name: "topic", ...getTypeByORM("varchar"), isPrimary: true },
|
|
{ name: "key", ...getTypeByORM("varchar"), isPrimary: true },
|
|
{ name: "value", ...getTypeByORM("text") },
|
|
],
|
|
});
|