@@ -32,6 +32,11 @@ model User {
|
||||
auditLogs AuditLog[]
|
||||
mediaObjects MediaObject[]
|
||||
lastGroupHash String? @db.Text
|
||||
// relations for debt module
|
||||
debtGroupsOwned DebtGroup[]
|
||||
debtGroupMembers DebtGroupMember[]
|
||||
createdDebtTransactions DebtTransaction[]
|
||||
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
@@ -188,3 +193,79 @@ model Application {
|
||||
@@index([applicationsClaim], name: "Application_applicationsClaim_idx")
|
||||
@@map("Application")
|
||||
}
|
||||
|
||||
// Debt management models for /api/bot/debt
|
||||
|
||||
enum DebtTransactionType {
|
||||
DEBT
|
||||
PAYMENT
|
||||
}
|
||||
|
||||
model DebtGroup {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
publicId String @unique @db.VarChar(20) // e.g. RL-X7K29P
|
||||
name String @db.VarChar(255)
|
||||
ownerId String @db.Uuid
|
||||
owner User @relation(fields: [ownerId], references: [id], onDelete: Cascade)
|
||||
members DebtGroupMember[]
|
||||
people DebtPerson[]
|
||||
transactions DebtTransaction[]
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
@@index([publicId])
|
||||
@@index([ownerId])
|
||||
}
|
||||
|
||||
model DebtGroupMember {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
group DebtGroup @relation(fields: [groupId], references: [id], onDelete: Cascade)
|
||||
groupId String @db.Uuid
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
userId String @db.Uuid
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
@@unique([groupId, userId])
|
||||
@@index([groupId])
|
||||
@@index([userId])
|
||||
}
|
||||
|
||||
model DebtPerson {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
group DebtGroup @relation(fields: [groupId], references: [id], onDelete: Cascade)
|
||||
groupId String @db.Uuid
|
||||
name String @db.VarChar(255)
|
||||
isDeleted Boolean @default(false)
|
||||
// relations back to transactions
|
||||
transactionsFrom DebtTransaction[] @relation("fromPerson")
|
||||
transactionsTo DebtTransaction[] @relation("toPerson")
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
@@unique([groupId, name])
|
||||
@@index([groupId])
|
||||
}
|
||||
|
||||
model DebtTransaction {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
group DebtGroup @relation(fields: [groupId], references: [id], onDelete: Cascade)
|
||||
groupId String @db.Uuid
|
||||
fromPerson DebtPerson @relation("fromPerson", fields: [fromPersonId], references: [id], onDelete: Restrict)
|
||||
fromPersonId String @db.Uuid
|
||||
toPerson DebtPerson @relation("toPerson", fields: [toPersonId], references: [id], onDelete: Restrict)
|
||||
toPersonId String @db.Uuid
|
||||
amount BigInt @db.BigInt
|
||||
type DebtTransactionType
|
||||
description String?
|
||||
transactionDate DateTime @db.Date
|
||||
createdAt DateTime @default(now())
|
||||
createdByUserId String @db.Uuid
|
||||
createdByUser User @relation(fields: [createdByUserId], references: [id], onDelete: SetNull)
|
||||
requestId String? @db.VarChar(255)
|
||||
|
||||
@@index([groupId])
|
||||
@@index([fromPersonId])
|
||||
@@index([toPersonId])
|
||||
@@unique([groupId, requestId])
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user