bot telegram debt init
Deploy / deploy (push) Successful in 1m4s

This commit is contained in:
Rayyan
2026-09-03 00:35:24 +07:00
parent e6c115164e
commit c3ce5c2f22
11 changed files with 1248 additions and 2 deletions
+81
View File
@@ -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])
}