From 76cdcab081f57466ebcca25204e9b580f3bcc796 Mon Sep 17 00:00:00 2001 From: sagesan2580 Date: Wed, 29 Jul 2026 20:33:02 +0100 Subject: [PATCH] feat: add EscrowTransaction model to Prisma schema (#241) Add EscrowTransaction model with EscrowStatus enum for escrow smart contract data. Includes relation to Merchant and Json milestones field. --- packages/database/migrations/schema.prisma | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/packages/database/migrations/schema.prisma b/packages/database/migrations/schema.prisma index 3f0e4cb..7759553 100644 --- a/packages/database/migrations/schema.prisma +++ b/packages/database/migrations/schema.prisma @@ -32,6 +32,15 @@ enum TreasuryWalletType { COLD } +enum EscrowStatus { + PENDING + FUNDED + RELEASED + CANCELLED + REFUNDED + DISPUTED +} + enum UserRole { ADMIN VIEWER @@ -53,6 +62,7 @@ model Merchant { auditLogs AuditLog[] customers Customer[] users User[] + escrows EscrowTransaction[] @@map("merchants") } @@ -189,3 +199,21 @@ model AuditLog { @@index([merchantId]) @@map("audit_logs") } + +model EscrowTransaction { + id String @id @default(uuid()) @db.Uuid + merchantId String @map("merchant_id") @db.Uuid + sender String + receiver String + amount Decimal @db.Decimal(18, 2) + assetCode String @map("asset_code") @db.VarChar(10) + milestones Json + status EscrowStatus @default(PENDING) + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + + merchant Merchant @relation(fields: [merchantId], references: [id], onDelete: Cascade) + + @@index([merchantId, status]) + @@map("escrow_transactions") +}