todou-backend/prisma/schema.prisma

140 lines
3.6 KiB
Plaintext

generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model Location {
id Int @id @default(autoincrement())
name String @unique
description String?
categories Category[]
created_at DateTime @default(now())
updated_at DateTime @updatedAt
@@map("locations")
}
model Category {
id Int @id @default(autoincrement())
name String
location Location @relation(fields: [location_id], references: [id])
location_id Int
items Item[]
boxes Box[]
userCategoryAccess UserCategoryAccess[]
created_at DateTime @default(now())
@@map("categories")
}
model Item {
id Int @id @default(autoincrement())
name String
code String?
description String?
quantity Int @default(0)
category Category @relation(fields: [category_id], references: [id])
category_id Int
box_items BoxItem[]
created_at DateTime @default(now())
updated_at DateTime @updatedAt
@@map("items")
}
model Box {
id Int @id @default(autoincrement())
name String
category Category @relation(fields: [category_id], references: [id])
category_id Int
items BoxItem[]
created_at DateTime @default(now())
@@map("boxes")
}
model BoxItem {
id Int @id @default(autoincrement())
box Box @relation(fields: [box_id], references: [id])
box_id Int
item Item @relation(fields: [item_id], references: [id])
item_id Int
quantity Int
created_at DateTime @default(now())
@@map("box_items")
}
model Role {
id Int @id @default(autoincrement())
name String @unique
description String?
users User[]
permissions RolePermission[]
created_at DateTime @default(now())
@@map("roles")
}
model Permission {
id Int @id @default(autoincrement())
name String @unique
description String?
roles RolePermission[]
created_at DateTime @default(now())
@@map("permissions")
}
model RolePermission {
id Int @id @default(autoincrement())
role Role @relation(fields: [role_id], references: [id])
role_id Int
permission Permission @relation(fields: [permission_id], references: [id])
permission_id Int
created_at DateTime @default(now())
@@unique([role_id, permission_id])
@@map("role_permissions")
}
model User {
id Int @id @default(autoincrement())
username String @unique
password_hash String
role Role @relation(fields: [role_id], references: [id])
role_id Int
is_active Boolean @default(true)
last_login DateTime?
categoryAccess UserCategoryAccess[]
created_at DateTime @default(now())
@@map("users")
}
model UserCategoryAccess {
id Int @id @default(autoincrement())
user User @relation(fields: [user_id], references: [id])
user_id Int
category Category @relation(fields: [category_id], references: [id])
category_id Int
created_at DateTime @default(now())
@@map("user_category_access")
}
model YearEndTransfer {
id Int @id @default(autoincrement())
year Int
completed_at DateTime
status String
error_message String?
created_at DateTime @default(now())
@@map("year_end_transfers")
}