Merge pull request 'dev/setup/schemas/NicolasD' (#1) from dev/setup/schemas/NicolasD into main

Reviewed-on: Targo/targo_backend#1
This commit is contained in:
Nicolas 2025-07-16 13:08:33 -04:00
commit 701d1be4ab

View File

@ -14,51 +14,140 @@ datasource db {
} }
model Users { model Users {
user_id Int @id @default(autoincrement()) id String @id @default(uuid())
first_name String first_name String
last_name String last_name String
email String? @unique email String? @unique
phone_number Int @unique phone_number Int @unique
residence String? residence String?
role Roles @default(GUEST)
employee Employees? @relation("UserEmployee") employee Employees? @relation("UserEmployee")
customer Customers? @relation("UserCustomer") customer Customers? @relation("UserCustomer")
oauth_access_token OAuthAccessTokens? @relation("UserOAuthAccessToken")
@@map("users") @@map("users")
} }
model Employees { model Employees {
employee_id Int @id @default(autoincrement()) id Int @id @default(autoincrement())
user Users @relation("UserEmployee", fields: [user_id], references:[user_id]) user Users @relation("UserEmployee", fields: [user_id], references:[id])
user_id Int @unique user_id String @unique
external_payroll_id Int @unique external_payroll_id Int @unique
company_code Int company_code Int
first_work_day DateTime first_work_day DateTime
last_work_day DateTime? last_work_day DateTime?
role Roles @default(EMPLOYEE)
timesheet Timesheets? @relation("TimesheetEmployee")
leave_request LeaveRequests? @relation("LeaveRequestEmployee")
@@map("employees") @@map("employees")
} }
model Customers { model Customers {
customer_id Int @id @default(autoincrement()) id Int @id @default(autoincrement())
user Users @relation("UserCustomer", fields: [user_id], references:[user_id]) user Users @relation("UserCustomer", fields: [user_id], references:[id])
user_id Int @unique user_id String @unique
invoice_id Int? @unique invoice_id Int? @unique
role Roles @default(CUSTOMER)
@@map("customers") @@map("customers")
} }
model LeaveRequests {
id Int @id @default(autoincrement())
employee Employees @relation("LeaveRequestEmployee", fields: [employee_id], references:[id])
employee_id Int @unique
leave_type LeaveTypes
start_date_time DateTime
end_date_time DateTime?
comment String
approval_status LeaveApprovalStatus @default(PENDING)
@@map("leave_requests")
}
model Timesheets {
id Int @id @default(autoincrement())
employee Employees @relation("TimesheetEmployee", fields: [employee_id], references:[id])
employee_id Int @unique
is_approved Boolean @default(false)
shift Shifts? @relation("ShiftTimesheet")
@@map("timesheets")
}
model Shifts {
id Int @id @default(autoincrement())
timesheet Timesheets @relation("ShiftTimesheet", fields: [timesheet_id], references: [id])
timesheet_id Int @unique
shift_code ShiftCodes @relation("ShiftShiftCode", fields: [shift_code_id], references: [id])
shift_code_id Int @unique
date DateTime
start_time DateTime
end_time DateTime
@@map("shifts")
}
model ShiftCodes {
id Int @id @default(autoincrement())
shift_type String
bank_code String
shift Shifts? @relation("ShiftShiftCode")
@@map("shift_codes")
}
model OAuthAccessTokens {
id String @id @default(cuid())
user Users @relation("UserOAuthAccessToken", fields: [user_id], references: [id])
user_id String @unique
access_token String @unique
refresh_token String @unique
access_token_expiry DateTime
refresh_token_expiry DateTime?
scopes Json @default("[]")
created_at DateTime @default(now())
updated_at DateTime?
@@map("refresh_tokens")
}
enum Roles { enum Roles {
ADMIN ADMIN
CUSTOMER
DEALER
EMPLOYEE
HR
SUPERVISOR SUPERVISOR
HR
ACCOUNTING ACCOUNTING
EMPLOYEE
DEALER
CUSTOMER
GUEST
@@map("roles") @@map("roles")
}
enum LeaveTypes {
SICK // maladie ou repos
VACATION // paye
UNPAID // non-paye
BEREAVEMENT // deuil de famille
PARENTAL // maternite/paternite/adoption
LEGAL // obligations legales comme devoir de juree
@@map("leave_types")
}
enum LeaveApprovalStatus {
PENDING
APPROVED
DENIED
CANCELLED
ESCALATED
@@map("leave_approval_status")
} }