ff-admin-server/src/migrations/baseSchemaTables/admin.ts

170 lines
5.6 KiB
TypeScript
Raw Normal View History

2025-01-30 15:58:34 +01:00
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 },
2025-01-31 11:06:02 +01:00
{ name: "static", type: getTypeByORM("boolean"), isNullable: false, default: false },
2025-01-30 15:58:34 +01:00
{ 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 },
],
});