@valentine-efagene/qshelter-common 2.0.14 → 2.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/generated/client/internal/class.js +2 -2
- package/dist/generated/client/internal/prismaNamespace.d.ts +2 -2
- package/dist/generated/client/internal/prismaNamespace.js +2 -2
- package/dist/generated/client/internal/prismaNamespaceBrowser.d.ts +2 -2
- package/dist/generated/client/internal/prismaNamespaceBrowser.js +2 -2
- package/dist/generated/client/models/RefreshToken.d.ts +35 -35
- package/package.json +1 -1
- package/prisma/migrations/20251228084551/migration.sql +16 -0
- package/prisma/schema.prisma +2 -2
|
@@ -15,14 +15,14 @@ const config = {
|
|
|
15
15
|
"clientVersion": "7.2.0",
|
|
16
16
|
"engineVersion": "0c8ef2ce45c83248ab3df073180d5eda9e8be7a3",
|
|
17
17
|
"activeProvider": "mysql",
|
|
18
|
-
"inlineSchema": "// =============================================================================\n// QSHELTER UNIFIED DATABASE SCHEMA\n// =============================================================================\n// This schema contains all database models for the QShelter platform\n// Organized by domain for better readability\n// =============================================================================\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../src/generated/client\"\n}\n\ndatasource db {\n provider = \"mysql\"\n}\n\n// =============================================================================\n// USER & AUTH DOMAIN\n// =============================================================================\n\nmodel User {\n id String @id @default(cuid())\n email String @unique\n password String?\n phone String? @unique\n firstName String?\n lastName String?\n isActive Boolean @default(true)\n isEmailVerified Boolean @default(false)\n googleId String?\n avatar String?\n tenantId String?\n tenant Tenant? @relation(fields: [tenantId], references: [id], onDelete: SetNull)\n // Support multiple roles via explicit join table `UserRole`\n userRoles UserRole[]\n walletId String? @unique\n wallet Wallet? @relation(fields: [walletId], references: [id])\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n emailVerifiedAt DateTime?\n emailVerificationToken String?\n lastLoginAt DateTime?\n refreshTokens RefreshToken[]\n passwordResets PasswordReset[]\n suspensions UserSuspension[]\n emailPreferences EmailPreference[]\n deviceEndpoints DeviceEndpoint[]\n socials Social[]\n\n // Relations to other domains\n properties Property[]\n mortgages Mortgage[] @relation(\"MortgageBorrower\")\n paymentPlans PaymentPlan[]\n contracts Contract[] @relation(\"ContractBuyer\")\n soldContracts Contract[] @relation(\"ContractSeller\")\n payments Payment[]\n\n @@index([email])\n @@index([tenantId])\n @@map(\"users\")\n}\n\nmodel Role {\n id String @id @default(cuid())\n name String @unique\n description String?\n userRoles UserRole[]\n permissions RolePermission[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@map(\"roles\")\n}\n\nmodel Permission {\n id String @id @default(cuid())\n name String @unique\n description String?\n resource String\n action String\n roles RolePermission[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([resource, action])\n @@index([resource])\n @@map(\"permissions\")\n}\n\nmodel RolePermission {\n roleId String\n permissionId String\n role Role @relation(fields: [roleId], references: [id], onDelete: Cascade)\n permission Permission @relation(fields: [permissionId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n\n @@id([roleId, permissionId])\n @@map(\"role_permissions\")\n}\n\nmodel UserRole {\n userId String\n roleId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n role Role @relation(fields: [roleId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n\n @@id([userId, roleId])\n @@map(\"user_roles\")\n}\n\nmodel Tenant {\n id String @id @default(cuid())\n name String\n subdomain String @unique\n isActive Boolean @default(true)\n users User[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([subdomain])\n @@map(\"tenants\")\n}\n\nmodel RefreshToken {\n id String @id @default(cuid())\n // Store a fixed-length hash for lookup/indexing and keep the raw JWT (optional)\n tokenHash String @unique @db.VarChar(64)\n token String? @db.LongText\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n expiresAt DateTime\n createdAt DateTime @default(now())\n\n @@index([userId])\n @@index([expiresAt])\n @@map(\"refresh_tokens\")\n}\n\nmodel PasswordReset {\n id String @id @default(cuid())\n token String @unique\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n expiresAt DateTime\n usedAt DateTime?\n createdAt DateTime @default(now())\n\n @@index([userId])\n @@index([expiresAt])\n @@map(\"password_resets\")\n}\n\nmodel UserSuspension {\n id String @id @default(cuid())\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n reason String\n suspendedAt DateTime @default(now())\n expiresAt DateTime?\n liftedAt DateTime?\n\n @@index([userId])\n @@map(\"user_suspensions\")\n}\n\nmodel EmailPreference {\n id String @id @default(cuid())\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n marketingEmails Boolean @default(true)\n transactionalEmails Boolean @default(true)\n propertyAlerts Boolean @default(true)\n paymentReminders Boolean @default(true)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([userId])\n @@map(\"email_preferences\")\n}\n\nmodel DeviceEndpoint {\n id String @id @default(cuid())\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n endpoint String // Push notification endpoint\n platform String // ios, android, web\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([userId])\n @@map(\"device_endpoints\")\n}\n\nmodel Social {\n id String @id @default(cuid())\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n provider String // google, facebook, twitter, etc\n socialId String // ID from the social provider\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([provider, socialId])\n @@index([userId])\n @@map(\"socials\")\n}\n\nmodel OAuthState {\n id String @id @default(cuid())\n state String @unique\n expiresAt DateTime\n createdAt DateTime @default(now())\n\n @@index([state])\n @@index([expiresAt])\n @@map(\"oauth_states\")\n}\n\nmodel Wallet {\n id String @id @default(cuid())\n balance Float @default(0)\n currency String @default(\"USD\")\n user User?\n transactions Transaction[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@map(\"wallets\")\n}\n\nmodel Transaction {\n id String @id @default(cuid())\n walletId String\n wallet Wallet @relation(fields: [walletId], references: [id], onDelete: Cascade)\n amount Float\n type String // CREDIT, DEBIT\n status String // PENDING, COMPLETED, FAILED\n reference String?\n description String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([walletId])\n @@map(\"transactions\")\n}\n\nmodel Settings {\n id String @id @default(cuid())\n key String @unique\n value String @db.Text\n category String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([category])\n @@map(\"settings\")\n}\n\n// =============================================================================\n// PROPERTY DOMAIN\n// =============================================================================\n\nmodel Property {\n id String @id @default(cuid())\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n title String\n category String // SALE, RENT, LEASE\n propertyType String // APARTMENT, HOUSE, LAND, COMMERCIAL\n country String\n currency String // USD, NGN, etc\n city String\n district String?\n zipCode String?\n streetAddress String?\n nBedrooms String\n nBathrooms String\n nParkingSpots String\n price Float\n longitude Float?\n latitude Float?\n area Float?\n status String @default(\"DRAFT\") // DRAFT, PUBLISHED, SOLD, RENTED\n description String? @db.Text\n displayImageId String?\n displayImage PropertyMedia? @relation(\"DisplayImage\", fields: [displayImageId], references: [id], onDelete: SetNull)\n isPublished Boolean @default(false)\n publishedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n documents PropertyDocument[]\n media PropertyMedia[] @relation(\"PropertyMedia\")\n amenities PropertyAmenity[]\n mortgages Mortgage[]\n paymentPlans PaymentPlan[]\n contracts Contract[]\n\n @@index([userId])\n @@index([category])\n @@index([propertyType])\n @@index([city])\n @@map(\"properties\")\n}\n\nmodel PropertyMedia {\n id String @id @default(cuid())\n propertyId String\n property Property @relation(\"PropertyMedia\", fields: [propertyId], references: [id], onDelete: Cascade)\n url String\n type String // IMAGE, VIDEO\n caption String?\n order Int @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n displayForProperties Property[] @relation(\"DisplayImage\")\n\n @@index([propertyId])\n @@map(\"property_media\")\n}\n\nmodel PropertyDocument {\n id String @id @default(cuid())\n propertyId String\n property Property @relation(fields: [propertyId], references: [id], onDelete: Cascade)\n name String\n url String\n type String // TITLE_DEED, SURVEY_PLAN, etc\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([propertyId])\n @@map(\"property_documents\")\n}\n\nmodel Amenity {\n id String @id @default(cuid())\n name String @unique\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n properties PropertyAmenity[]\n\n @@map(\"amenities\")\n}\n\nmodel PropertyAmenity {\n propertyId String\n amenityId String\n property Property @relation(fields: [propertyId], references: [id], onDelete: Cascade)\n amenity Amenity @relation(fields: [amenityId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n\n @@id([propertyId, amenityId])\n @@map(\"property_amenities\")\n}\n\n// =============================================================================\n// MORTGAGE DOMAIN\n// =============================================================================\n\nmodel Mortgage {\n id String @id @default(cuid())\n propertyId String\n property Property @relation(fields: [propertyId], references: [id], onDelete: Cascade)\n borrowerId String\n borrower User @relation(\"MortgageBorrower\", fields: [borrowerId], references: [id], onDelete: Cascade)\n mortgageTypeId String?\n mortgageType MortgageType? @relation(fields: [mortgageTypeId], references: [id])\n downpaymentPlanId String?\n downpaymentPlan MortgageDownpaymentPlan? @relation(fields: [downpaymentPlanId], references: [id])\n principal Float\n downPayment Float\n downPaymentPaid Float @default(0)\n termMonths Int\n interestRate Float\n monthlyPayment Float\n status String @default(\"DRAFT\") // DRAFT, PENDING, ACTIVE, COMPLETED, CANCELLED\n state String @default(\"DRAFT\") // FSM state\n stateMetadata String? @db.Text // JSON metadata\n lastReminderSentAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n documents MortgageDocument[]\n steps MortgageStep[]\n transitions MortgageTransition[]\n transitionEvents MortgageTransitionEvent[]\n\n @@index([propertyId])\n @@index([borrowerId])\n @@index([status])\n @@index([state])\n @@map(\"mortgages\")\n}\n\nmodel MortgageType {\n id String @id @default(cuid())\n name String @unique\n description String? @db.Text\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n mortgages Mortgage[]\n\n @@map(\"mortgage_types\")\n}\n\nmodel MortgageDocument {\n id String @id @default(cuid())\n mortgageId String\n mortgage Mortgage @relation(fields: [mortgageId], references: [id], onDelete: Cascade)\n name String\n url String\n type String // INCOME_PROOF, ID, etc\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([mortgageId])\n @@map(\"mortgage_documents\")\n}\n\nmodel MortgageStep {\n id String @id @default(cuid())\n mortgageId String\n mortgage Mortgage @relation(fields: [mortgageId], references: [id], onDelete: Cascade)\n name String\n description String? @db.Text\n order Int\n isCompleted Boolean @default(false)\n completedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([mortgageId])\n @@map(\"mortgage_steps\")\n}\n\nmodel MortgageDownpaymentPlan {\n id String @id @default(cuid())\n totalAmount Float\n paidAmount Float @default(0)\n status String @default(\"PENDING\") // PENDING, ACTIVE, COMPLETED\n startDate DateTime\n endDate DateTime\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n mortgages Mortgage[]\n installments MortgageDownpaymentInstallment[]\n payments MortgageDownpaymentPayment[]\n\n @@map(\"mortgage_downpayment_plans\")\n}\n\nmodel MortgageDownpaymentInstallment {\n id String @id @default(cuid())\n planId String\n plan MortgageDownpaymentPlan @relation(fields: [planId], references: [id], onDelete: Cascade)\n amount Float\n dueDate DateTime\n isPaid Boolean @default(false)\n paidDate DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([planId])\n @@map(\"mortgage_downpayment_installments\")\n}\n\nmodel MortgageDownpaymentPayment {\n id String @id @default(cuid())\n planId String\n plan MortgageDownpaymentPlan @relation(fields: [planId], references: [id], onDelete: Cascade)\n amount Float\n paymentMethod String\n reference String?\n status String @default(\"PENDING\")\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([planId])\n @@map(\"mortgage_downpayment_payments\")\n}\n\nmodel MortgageTransition {\n id String @id @default(cuid())\n mortgageId String\n mortgage Mortgage @relation(fields: [mortgageId], references: [id], onDelete: Cascade)\n fromState String\n toState String\n trigger String\n metadata String? @db.Text // JSON\n transitionedAt DateTime @default(now())\n\n @@index([mortgageId])\n @@map(\"mortgage_transitions\")\n}\n\nmodel MortgageTransitionEvent {\n id String @id @default(cuid())\n mortgageId String\n mortgage Mortgage @relation(fields: [mortgageId], references: [id], onDelete: Cascade)\n event String\n data String? @db.Text // JSON\n createdAt DateTime @default(now())\n\n @@index([mortgageId])\n @@map(\"mortgage_transition_events\")\n}\n\n// =============================================================================\n// PAYMENT & CONTRACT DOMAIN\n// =============================================================================\n\nmodel PaymentPlan {\n id String @id @default(cuid())\n propertyId String\n property Property @relation(fields: [propertyId], references: [id], onDelete: Cascade)\n buyerId String?\n buyer User? @relation(fields: [buyerId], references: [id])\n planType String // MORTGAGE, INSTALLMENT, RENT_TO_OWN, LEASE, OUTRIGHT_PURCHASE, CUSTOM\n name String\n description String? @db.Text\n totalAmount Float\n downPaymentAmount Float @default(0)\n downPaymentPaid Float @default(0)\n principalAmount Float\n interestRate Float @default(0)\n totalInterest Float @default(0)\n state String @default(\"DRAFT\") // FSM state\n stateMetadata String? @db.Text\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n contract Contract?\n schedules PaymentSchedule[]\n payments Payment[]\n\n @@index([propertyId])\n @@index([buyerId])\n @@index([state])\n @@map(\"payment_plans\")\n}\n\nmodel PaymentSchedule {\n id String @id @default(cuid())\n planId String\n plan PaymentPlan @relation(fields: [planId], references: [id], onDelete: Cascade)\n name String\n frequency String // MONTHLY, WEEKLY, QUARTERLY, CUSTOM\n startDate DateTime\n endDate DateTime?\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n installments PaymentInstallment[]\n payments Payment[]\n\n @@index([planId])\n @@map(\"payment_schedules\")\n}\n\nmodel PaymentInstallment {\n id String @id @default(cuid())\n scheduleId String\n schedule PaymentSchedule @relation(fields: [scheduleId], references: [id], onDelete: Cascade)\n installmentNumber Int\n amount Float\n principalAmount Float\n interestAmount Float\n dueDate DateTime\n status String @default(\"PENDING\") // PENDING, PAID, OVERDUE, WAIVED\n paidAmount Float @default(0)\n paidDate DateTime?\n lateFee Float @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n payments Payment[]\n\n @@index([scheduleId])\n @@index([dueDate])\n @@index([status])\n @@map(\"payment_installments\")\n}\n\nmodel Payment {\n id String @id @default(cuid())\n planId String\n plan PaymentPlan @relation(fields: [planId], references: [id], onDelete: Cascade)\n scheduleId String?\n schedule PaymentSchedule? @relation(fields: [scheduleId], references: [id])\n installmentId String?\n installment PaymentInstallment? @relation(fields: [installmentId], references: [id])\n payerId String?\n payer User? @relation(fields: [payerId], references: [id])\n amount Float\n principalAmount Float @default(0)\n interestAmount Float @default(0)\n lateFeeAmount Float @default(0)\n paymentMethod String // BANK_TRANSFER, CREDIT_CARD, WALLET, etc\n status String @default(\"INITIATED\") // INITIATED, PENDING, PROCESSING, COMPLETED, FAILED, CANCELLED, REFUNDED\n reference String? @unique\n gatewayResponse String? @db.Text // JSON\n processedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([planId])\n @@index([payerId])\n @@index([status])\n @@index([reference])\n @@map(\"payments\")\n}\n\nmodel Contract {\n id String @id @default(cuid())\n propertyId String\n property Property @relation(fields: [propertyId], references: [id], onDelete: Cascade)\n paymentPlanId String? @unique\n paymentPlan PaymentPlan? @relation(fields: [paymentPlanId], references: [id])\n buyerId String?\n buyer User? @relation(\"ContractBuyer\", fields: [buyerId], references: [id])\n sellerId String?\n seller User? @relation(\"ContractSeller\", fields: [sellerId], references: [id])\n contractType String // MORTGAGE, SALE_AGREEMENT, LEASE_AGREEMENT, etc\n contractNumber String @unique\n title String\n description String? @db.Text\n status String @default(\"DRAFT\") // DRAFT, PENDING_SIGNATURE, ACTIVE, COMPLETED, TERMINATED\n startDate DateTime?\n endDate DateTime?\n signedAt DateTime?\n terminatedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n documents ContractDocument[]\n\n @@index([propertyId])\n @@index([buyerId])\n @@index([sellerId])\n @@index([status])\n @@map(\"contracts\")\n}\n\nmodel ContractDocument {\n id String @id @default(cuid())\n contractId String\n contract Contract @relation(fields: [contractId], references: [id], onDelete: Cascade)\n name String\n url String\n type String\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([contractId])\n @@map(\"contract_documents\")\n}\n",
|
|
18
|
+
"inlineSchema": "// =============================================================================\n// QSHELTER UNIFIED DATABASE SCHEMA\n// =============================================================================\n// This schema contains all database models for the QShelter platform\n// Organized by domain for better readability\n// =============================================================================\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../src/generated/client\"\n}\n\ndatasource db {\n provider = \"mysql\"\n}\n\n// =============================================================================\n// USER & AUTH DOMAIN\n// =============================================================================\n\nmodel User {\n id String @id @default(cuid())\n email String @unique\n password String?\n phone String? @unique\n firstName String?\n lastName String?\n isActive Boolean @default(true)\n isEmailVerified Boolean @default(false)\n googleId String?\n avatar String?\n tenantId String?\n tenant Tenant? @relation(fields: [tenantId], references: [id], onDelete: SetNull)\n // Support multiple roles via explicit join table `UserRole`\n userRoles UserRole[]\n walletId String? @unique\n wallet Wallet? @relation(fields: [walletId], references: [id])\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n emailVerifiedAt DateTime?\n emailVerificationToken String?\n lastLoginAt DateTime?\n refreshTokens RefreshToken[]\n passwordResets PasswordReset[]\n suspensions UserSuspension[]\n emailPreferences EmailPreference[]\n deviceEndpoints DeviceEndpoint[]\n socials Social[]\n\n // Relations to other domains\n properties Property[]\n mortgages Mortgage[] @relation(\"MortgageBorrower\")\n paymentPlans PaymentPlan[]\n contracts Contract[] @relation(\"ContractBuyer\")\n soldContracts Contract[] @relation(\"ContractSeller\")\n payments Payment[]\n\n @@index([email])\n @@index([tenantId])\n @@map(\"users\")\n}\n\nmodel Role {\n id String @id @default(cuid())\n name String @unique\n description String?\n userRoles UserRole[]\n permissions RolePermission[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@map(\"roles\")\n}\n\nmodel Permission {\n id String @id @default(cuid())\n name String @unique\n description String?\n resource String\n action String\n roles RolePermission[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([resource, action])\n @@index([resource])\n @@map(\"permissions\")\n}\n\nmodel RolePermission {\n roleId String\n permissionId String\n role Role @relation(fields: [roleId], references: [id], onDelete: Cascade)\n permission Permission @relation(fields: [permissionId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n\n @@id([roleId, permissionId])\n @@map(\"role_permissions\")\n}\n\nmodel UserRole {\n userId String\n roleId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n role Role @relation(fields: [roleId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n\n @@id([userId, roleId])\n @@map(\"user_roles\")\n}\n\nmodel Tenant {\n id String @id @default(cuid())\n name String\n subdomain String @unique\n isActive Boolean @default(true)\n users User[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([subdomain])\n @@map(\"tenants\")\n}\n\nmodel RefreshToken {\n id String @id @default(cuid())\n // Use the JWT `jti` for indexed lookups and keep the raw JWT (optional)\n jti String? @unique @db.VarChar(255)\n token String? @db.LongText\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n expiresAt DateTime\n createdAt DateTime @default(now())\n\n @@index([userId])\n @@index([expiresAt])\n @@map(\"refresh_tokens\")\n}\n\nmodel PasswordReset {\n id String @id @default(cuid())\n token String @unique\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n expiresAt DateTime\n usedAt DateTime?\n createdAt DateTime @default(now())\n\n @@index([userId])\n @@index([expiresAt])\n @@map(\"password_resets\")\n}\n\nmodel UserSuspension {\n id String @id @default(cuid())\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n reason String\n suspendedAt DateTime @default(now())\n expiresAt DateTime?\n liftedAt DateTime?\n\n @@index([userId])\n @@map(\"user_suspensions\")\n}\n\nmodel EmailPreference {\n id String @id @default(cuid())\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n marketingEmails Boolean @default(true)\n transactionalEmails Boolean @default(true)\n propertyAlerts Boolean @default(true)\n paymentReminders Boolean @default(true)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([userId])\n @@map(\"email_preferences\")\n}\n\nmodel DeviceEndpoint {\n id String @id @default(cuid())\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n endpoint String // Push notification endpoint\n platform String // ios, android, web\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([userId])\n @@map(\"device_endpoints\")\n}\n\nmodel Social {\n id String @id @default(cuid())\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n provider String // google, facebook, twitter, etc\n socialId String // ID from the social provider\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([provider, socialId])\n @@index([userId])\n @@map(\"socials\")\n}\n\nmodel OAuthState {\n id String @id @default(cuid())\n state String @unique\n expiresAt DateTime\n createdAt DateTime @default(now())\n\n @@index([state])\n @@index([expiresAt])\n @@map(\"oauth_states\")\n}\n\nmodel Wallet {\n id String @id @default(cuid())\n balance Float @default(0)\n currency String @default(\"USD\")\n user User?\n transactions Transaction[]\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@map(\"wallets\")\n}\n\nmodel Transaction {\n id String @id @default(cuid())\n walletId String\n wallet Wallet @relation(fields: [walletId], references: [id], onDelete: Cascade)\n amount Float\n type String // CREDIT, DEBIT\n status String // PENDING, COMPLETED, FAILED\n reference String?\n description String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([walletId])\n @@map(\"transactions\")\n}\n\nmodel Settings {\n id String @id @default(cuid())\n key String @unique\n value String @db.Text\n category String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([category])\n @@map(\"settings\")\n}\n\n// =============================================================================\n// PROPERTY DOMAIN\n// =============================================================================\n\nmodel Property {\n id String @id @default(cuid())\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n title String\n category String // SALE, RENT, LEASE\n propertyType String // APARTMENT, HOUSE, LAND, COMMERCIAL\n country String\n currency String // USD, NGN, etc\n city String\n district String?\n zipCode String?\n streetAddress String?\n nBedrooms String\n nBathrooms String\n nParkingSpots String\n price Float\n longitude Float?\n latitude Float?\n area Float?\n status String @default(\"DRAFT\") // DRAFT, PUBLISHED, SOLD, RENTED\n description String? @db.Text\n displayImageId String?\n displayImage PropertyMedia? @relation(\"DisplayImage\", fields: [displayImageId], references: [id], onDelete: SetNull)\n isPublished Boolean @default(false)\n publishedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n documents PropertyDocument[]\n media PropertyMedia[] @relation(\"PropertyMedia\")\n amenities PropertyAmenity[]\n mortgages Mortgage[]\n paymentPlans PaymentPlan[]\n contracts Contract[]\n\n @@index([userId])\n @@index([category])\n @@index([propertyType])\n @@index([city])\n @@map(\"properties\")\n}\n\nmodel PropertyMedia {\n id String @id @default(cuid())\n propertyId String\n property Property @relation(\"PropertyMedia\", fields: [propertyId], references: [id], onDelete: Cascade)\n url String\n type String // IMAGE, VIDEO\n caption String?\n order Int @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n displayForProperties Property[] @relation(\"DisplayImage\")\n\n @@index([propertyId])\n @@map(\"property_media\")\n}\n\nmodel PropertyDocument {\n id String @id @default(cuid())\n propertyId String\n property Property @relation(fields: [propertyId], references: [id], onDelete: Cascade)\n name String\n url String\n type String // TITLE_DEED, SURVEY_PLAN, etc\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([propertyId])\n @@map(\"property_documents\")\n}\n\nmodel Amenity {\n id String @id @default(cuid())\n name String @unique\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n properties PropertyAmenity[]\n\n @@map(\"amenities\")\n}\n\nmodel PropertyAmenity {\n propertyId String\n amenityId String\n property Property @relation(fields: [propertyId], references: [id], onDelete: Cascade)\n amenity Amenity @relation(fields: [amenityId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n\n @@id([propertyId, amenityId])\n @@map(\"property_amenities\")\n}\n\n// =============================================================================\n// MORTGAGE DOMAIN\n// =============================================================================\n\nmodel Mortgage {\n id String @id @default(cuid())\n propertyId String\n property Property @relation(fields: [propertyId], references: [id], onDelete: Cascade)\n borrowerId String\n borrower User @relation(\"MortgageBorrower\", fields: [borrowerId], references: [id], onDelete: Cascade)\n mortgageTypeId String?\n mortgageType MortgageType? @relation(fields: [mortgageTypeId], references: [id])\n downpaymentPlanId String?\n downpaymentPlan MortgageDownpaymentPlan? @relation(fields: [downpaymentPlanId], references: [id])\n principal Float\n downPayment Float\n downPaymentPaid Float @default(0)\n termMonths Int\n interestRate Float\n monthlyPayment Float\n status String @default(\"DRAFT\") // DRAFT, PENDING, ACTIVE, COMPLETED, CANCELLED\n state String @default(\"DRAFT\") // FSM state\n stateMetadata String? @db.Text // JSON metadata\n lastReminderSentAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n documents MortgageDocument[]\n steps MortgageStep[]\n transitions MortgageTransition[]\n transitionEvents MortgageTransitionEvent[]\n\n @@index([propertyId])\n @@index([borrowerId])\n @@index([status])\n @@index([state])\n @@map(\"mortgages\")\n}\n\nmodel MortgageType {\n id String @id @default(cuid())\n name String @unique\n description String? @db.Text\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n mortgages Mortgage[]\n\n @@map(\"mortgage_types\")\n}\n\nmodel MortgageDocument {\n id String @id @default(cuid())\n mortgageId String\n mortgage Mortgage @relation(fields: [mortgageId], references: [id], onDelete: Cascade)\n name String\n url String\n type String // INCOME_PROOF, ID, etc\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([mortgageId])\n @@map(\"mortgage_documents\")\n}\n\nmodel MortgageStep {\n id String @id @default(cuid())\n mortgageId String\n mortgage Mortgage @relation(fields: [mortgageId], references: [id], onDelete: Cascade)\n name String\n description String? @db.Text\n order Int\n isCompleted Boolean @default(false)\n completedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([mortgageId])\n @@map(\"mortgage_steps\")\n}\n\nmodel MortgageDownpaymentPlan {\n id String @id @default(cuid())\n totalAmount Float\n paidAmount Float @default(0)\n status String @default(\"PENDING\") // PENDING, ACTIVE, COMPLETED\n startDate DateTime\n endDate DateTime\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n mortgages Mortgage[]\n installments MortgageDownpaymentInstallment[]\n payments MortgageDownpaymentPayment[]\n\n @@map(\"mortgage_downpayment_plans\")\n}\n\nmodel MortgageDownpaymentInstallment {\n id String @id @default(cuid())\n planId String\n plan MortgageDownpaymentPlan @relation(fields: [planId], references: [id], onDelete: Cascade)\n amount Float\n dueDate DateTime\n isPaid Boolean @default(false)\n paidDate DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([planId])\n @@map(\"mortgage_downpayment_installments\")\n}\n\nmodel MortgageDownpaymentPayment {\n id String @id @default(cuid())\n planId String\n plan MortgageDownpaymentPlan @relation(fields: [planId], references: [id], onDelete: Cascade)\n amount Float\n paymentMethod String\n reference String?\n status String @default(\"PENDING\")\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([planId])\n @@map(\"mortgage_downpayment_payments\")\n}\n\nmodel MortgageTransition {\n id String @id @default(cuid())\n mortgageId String\n mortgage Mortgage @relation(fields: [mortgageId], references: [id], onDelete: Cascade)\n fromState String\n toState String\n trigger String\n metadata String? @db.Text // JSON\n transitionedAt DateTime @default(now())\n\n @@index([mortgageId])\n @@map(\"mortgage_transitions\")\n}\n\nmodel MortgageTransitionEvent {\n id String @id @default(cuid())\n mortgageId String\n mortgage Mortgage @relation(fields: [mortgageId], references: [id], onDelete: Cascade)\n event String\n data String? @db.Text // JSON\n createdAt DateTime @default(now())\n\n @@index([mortgageId])\n @@map(\"mortgage_transition_events\")\n}\n\n// =============================================================================\n// PAYMENT & CONTRACT DOMAIN\n// =============================================================================\n\nmodel PaymentPlan {\n id String @id @default(cuid())\n propertyId String\n property Property @relation(fields: [propertyId], references: [id], onDelete: Cascade)\n buyerId String?\n buyer User? @relation(fields: [buyerId], references: [id])\n planType String // MORTGAGE, INSTALLMENT, RENT_TO_OWN, LEASE, OUTRIGHT_PURCHASE, CUSTOM\n name String\n description String? @db.Text\n totalAmount Float\n downPaymentAmount Float @default(0)\n downPaymentPaid Float @default(0)\n principalAmount Float\n interestRate Float @default(0)\n totalInterest Float @default(0)\n state String @default(\"DRAFT\") // FSM state\n stateMetadata String? @db.Text\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n contract Contract?\n schedules PaymentSchedule[]\n payments Payment[]\n\n @@index([propertyId])\n @@index([buyerId])\n @@index([state])\n @@map(\"payment_plans\")\n}\n\nmodel PaymentSchedule {\n id String @id @default(cuid())\n planId String\n plan PaymentPlan @relation(fields: [planId], references: [id], onDelete: Cascade)\n name String\n frequency String // MONTHLY, WEEKLY, QUARTERLY, CUSTOM\n startDate DateTime\n endDate DateTime?\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n installments PaymentInstallment[]\n payments Payment[]\n\n @@index([planId])\n @@map(\"payment_schedules\")\n}\n\nmodel PaymentInstallment {\n id String @id @default(cuid())\n scheduleId String\n schedule PaymentSchedule @relation(fields: [scheduleId], references: [id], onDelete: Cascade)\n installmentNumber Int\n amount Float\n principalAmount Float\n interestAmount Float\n dueDate DateTime\n status String @default(\"PENDING\") // PENDING, PAID, OVERDUE, WAIVED\n paidAmount Float @default(0)\n paidDate DateTime?\n lateFee Float @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n payments Payment[]\n\n @@index([scheduleId])\n @@index([dueDate])\n @@index([status])\n @@map(\"payment_installments\")\n}\n\nmodel Payment {\n id String @id @default(cuid())\n planId String\n plan PaymentPlan @relation(fields: [planId], references: [id], onDelete: Cascade)\n scheduleId String?\n schedule PaymentSchedule? @relation(fields: [scheduleId], references: [id])\n installmentId String?\n installment PaymentInstallment? @relation(fields: [installmentId], references: [id])\n payerId String?\n payer User? @relation(fields: [payerId], references: [id])\n amount Float\n principalAmount Float @default(0)\n interestAmount Float @default(0)\n lateFeeAmount Float @default(0)\n paymentMethod String // BANK_TRANSFER, CREDIT_CARD, WALLET, etc\n status String @default(\"INITIATED\") // INITIATED, PENDING, PROCESSING, COMPLETED, FAILED, CANCELLED, REFUNDED\n reference String? @unique\n gatewayResponse String? @db.Text // JSON\n processedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([planId])\n @@index([payerId])\n @@index([status])\n @@index([reference])\n @@map(\"payments\")\n}\n\nmodel Contract {\n id String @id @default(cuid())\n propertyId String\n property Property @relation(fields: [propertyId], references: [id], onDelete: Cascade)\n paymentPlanId String? @unique\n paymentPlan PaymentPlan? @relation(fields: [paymentPlanId], references: [id])\n buyerId String?\n buyer User? @relation(\"ContractBuyer\", fields: [buyerId], references: [id])\n sellerId String?\n seller User? @relation(\"ContractSeller\", fields: [sellerId], references: [id])\n contractType String // MORTGAGE, SALE_AGREEMENT, LEASE_AGREEMENT, etc\n contractNumber String @unique\n title String\n description String? @db.Text\n status String @default(\"DRAFT\") // DRAFT, PENDING_SIGNATURE, ACTIVE, COMPLETED, TERMINATED\n startDate DateTime?\n endDate DateTime?\n signedAt DateTime?\n terminatedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n documents ContractDocument[]\n\n @@index([propertyId])\n @@index([buyerId])\n @@index([sellerId])\n @@index([status])\n @@map(\"contracts\")\n}\n\nmodel ContractDocument {\n id String @id @default(cuid())\n contractId String\n contract Contract @relation(fields: [contractId], references: [id], onDelete: Cascade)\n name String\n url String\n type String\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([contractId])\n @@map(\"contract_documents\")\n}\n",
|
|
19
19
|
"runtimeDataModel": {
|
|
20
20
|
"models": {},
|
|
21
21
|
"enums": {},
|
|
22
22
|
"types": {}
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
|
-
config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"isEmailVerified\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"googleId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"avatar\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tenantId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tenant\",\"kind\":\"object\",\"type\":\"Tenant\",\"relationName\":\"TenantToUser\"},{\"name\":\"userRoles\",\"kind\":\"object\",\"type\":\"UserRole\",\"relationName\":\"UserToUserRole\"},{\"name\":\"walletId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"wallet\",\"kind\":\"object\",\"type\":\"Wallet\",\"relationName\":\"UserToWallet\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"emailVerifiedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"emailVerificationToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastLoginAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"refreshTokens\",\"kind\":\"object\",\"type\":\"RefreshToken\",\"relationName\":\"RefreshTokenToUser\"},{\"name\":\"passwordResets\",\"kind\":\"object\",\"type\":\"PasswordReset\",\"relationName\":\"PasswordResetToUser\"},{\"name\":\"suspensions\",\"kind\":\"object\",\"type\":\"UserSuspension\",\"relationName\":\"UserToUserSuspension\"},{\"name\":\"emailPreferences\",\"kind\":\"object\",\"type\":\"EmailPreference\",\"relationName\":\"EmailPreferenceToUser\"},{\"name\":\"deviceEndpoints\",\"kind\":\"object\",\"type\":\"DeviceEndpoint\",\"relationName\":\"DeviceEndpointToUser\"},{\"name\":\"socials\",\"kind\":\"object\",\"type\":\"Social\",\"relationName\":\"SocialToUser\"},{\"name\":\"properties\",\"kind\":\"object\",\"type\":\"Property\",\"relationName\":\"PropertyToUser\"},{\"name\":\"mortgages\",\"kind\":\"object\",\"type\":\"Mortgage\",\"relationName\":\"MortgageBorrower\"},{\"name\":\"paymentPlans\",\"kind\":\"object\",\"type\":\"PaymentPlan\",\"relationName\":\"PaymentPlanToUser\"},{\"name\":\"contracts\",\"kind\":\"object\",\"type\":\"Contract\",\"relationName\":\"ContractBuyer\"},{\"name\":\"soldContracts\",\"kind\":\"object\",\"type\":\"Contract\",\"relationName\":\"ContractSeller\"},{\"name\":\"payments\",\"kind\":\"object\",\"type\":\"Payment\",\"relationName\":\"PaymentToUser\"}],\"dbName\":\"users\"},\"Role\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userRoles\",\"kind\":\"object\",\"type\":\"UserRole\",\"relationName\":\"RoleToUserRole\"},{\"name\":\"permissions\",\"kind\":\"object\",\"type\":\"RolePermission\",\"relationName\":\"RoleToRolePermission\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"roles\"},\"Permission\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"action\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roles\",\"kind\":\"object\",\"type\":\"RolePermission\",\"relationName\":\"PermissionToRolePermission\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"permissions\"},\"RolePermission\":{\"fields\":[{\"name\":\"roleId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"permissionId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"object\",\"type\":\"Role\",\"relationName\":\"RoleToRolePermission\"},{\"name\":\"permission\",\"kind\":\"object\",\"type\":\"Permission\",\"relationName\":\"PermissionToRolePermission\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"role_permissions\"},\"UserRole\":{\"fields\":[{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roleId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserRole\"},{\"name\":\"role\",\"kind\":\"object\",\"type\":\"Role\",\"relationName\":\"RoleToUserRole\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"user_roles\"},\"Tenant\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"subdomain\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"users\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TenantToUser\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"tenants\"},\"RefreshToken\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"RefreshTokenToUser\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"refresh_tokens\"},\"PasswordReset\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"PasswordResetToUser\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"usedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"password_resets\"},\"UserSuspension\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserSuspension\"},{\"name\":\"reason\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"suspendedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"liftedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"user_suspensions\"},\"EmailPreference\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"EmailPreferenceToUser\"},{\"name\":\"marketingEmails\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"transactionalEmails\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"propertyAlerts\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"paymentReminders\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"email_preferences\"},\"DeviceEndpoint\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"DeviceEndpointToUser\"},{\"name\":\"endpoint\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"platform\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"device_endpoints\"},\"Social\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SocialToUser\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"socialId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"socials\"},\"OAuthState\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"state\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"oauth_states\"},\"Wallet\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"balance\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"currency\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToWallet\"},{\"name\":\"transactions\",\"kind\":\"object\",\"type\":\"Transaction\",\"relationName\":\"TransactionToWallet\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"wallets\"},\"Transaction\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"walletId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"wallet\",\"kind\":\"object\",\"type\":\"Wallet\",\"relationName\":\"TransactionToWallet\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reference\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"transactions\"},\"Settings\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"settings\"},\"Property\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"PropertyToUser\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"propertyType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"country\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"currency\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"city\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"district\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"zipCode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"streetAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nBedrooms\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nBathrooms\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nParkingSpots\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"price\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"longitude\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"latitude\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"area\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayImageId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayImage\",\"kind\":\"object\",\"type\":\"PropertyMedia\",\"relationName\":\"DisplayImage\"},{\"name\":\"isPublished\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"publishedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"documents\",\"kind\":\"object\",\"type\":\"PropertyDocument\",\"relationName\":\"PropertyToPropertyDocument\"},{\"name\":\"media\",\"kind\":\"object\",\"type\":\"PropertyMedia\",\"relationName\":\"PropertyMedia\"},{\"name\":\"amenities\",\"kind\":\"object\",\"type\":\"PropertyAmenity\",\"relationName\":\"PropertyToPropertyAmenity\"},{\"name\":\"mortgages\",\"kind\":\"object\",\"type\":\"Mortgage\",\"relationName\":\"MortgageToProperty\"},{\"name\":\"paymentPlans\",\"kind\":\"object\",\"type\":\"PaymentPlan\",\"relationName\":\"PaymentPlanToProperty\"},{\"name\":\"contracts\",\"kind\":\"object\",\"type\":\"Contract\",\"relationName\":\"ContractToProperty\"}],\"dbName\":\"properties\"},\"PropertyMedia\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"propertyId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"property\",\"kind\":\"object\",\"type\":\"Property\",\"relationName\":\"PropertyMedia\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"caption\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"order\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"displayForProperties\",\"kind\":\"object\",\"type\":\"Property\",\"relationName\":\"DisplayImage\"}],\"dbName\":\"property_media\"},\"PropertyDocument\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"propertyId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"property\",\"kind\":\"object\",\"type\":\"Property\",\"relationName\":\"PropertyToPropertyDocument\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"property_documents\"},\"Amenity\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"properties\",\"kind\":\"object\",\"type\":\"PropertyAmenity\",\"relationName\":\"AmenityToPropertyAmenity\"}],\"dbName\":\"amenities\"},\"PropertyAmenity\":{\"fields\":[{\"name\":\"propertyId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"amenityId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"property\",\"kind\":\"object\",\"type\":\"Property\",\"relationName\":\"PropertyToPropertyAmenity\"},{\"name\":\"amenity\",\"kind\":\"object\",\"type\":\"Amenity\",\"relationName\":\"AmenityToPropertyAmenity\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"property_amenities\"},\"Mortgage\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"propertyId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"property\",\"kind\":\"object\",\"type\":\"Property\",\"relationName\":\"MortgageToProperty\"},{\"name\":\"borrowerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"borrower\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"MortgageBorrower\"},{\"name\":\"mortgageTypeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mortgageType\",\"kind\":\"object\",\"type\":\"MortgageType\",\"relationName\":\"MortgageToMortgageType\"},{\"name\":\"downpaymentPlanId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"downpaymentPlan\",\"kind\":\"object\",\"type\":\"MortgageDownpaymentPlan\",\"relationName\":\"MortgageToMortgageDownpaymentPlan\"},{\"name\":\"principal\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"downPayment\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"downPaymentPaid\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"termMonths\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"interestRate\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"monthlyPayment\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"state\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"stateMetadata\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastReminderSentAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"documents\",\"kind\":\"object\",\"type\":\"MortgageDocument\",\"relationName\":\"MortgageToMortgageDocument\"},{\"name\":\"steps\",\"kind\":\"object\",\"type\":\"MortgageStep\",\"relationName\":\"MortgageToMortgageStep\"},{\"name\":\"transitions\",\"kind\":\"object\",\"type\":\"MortgageTransition\",\"relationName\":\"MortgageToMortgageTransition\"},{\"name\":\"transitionEvents\",\"kind\":\"object\",\"type\":\"MortgageTransitionEvent\",\"relationName\":\"MortgageToMortgageTransitionEvent\"}],\"dbName\":\"mortgages\"},\"MortgageType\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"mortgages\",\"kind\":\"object\",\"type\":\"Mortgage\",\"relationName\":\"MortgageToMortgageType\"}],\"dbName\":\"mortgage_types\"},\"MortgageDocument\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mortgageId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mortgage\",\"kind\":\"object\",\"type\":\"Mortgage\",\"relationName\":\"MortgageToMortgageDocument\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"mortgage_documents\"},\"MortgageStep\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mortgageId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mortgage\",\"kind\":\"object\",\"type\":\"Mortgage\",\"relationName\":\"MortgageToMortgageStep\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"order\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"isCompleted\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"completedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"mortgage_steps\"},\"MortgageDownpaymentPlan\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"totalAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"paidAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"startDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"endDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"mortgages\",\"kind\":\"object\",\"type\":\"Mortgage\",\"relationName\":\"MortgageToMortgageDownpaymentPlan\"},{\"name\":\"installments\",\"kind\":\"object\",\"type\":\"MortgageDownpaymentInstallment\",\"relationName\":\"MortgageDownpaymentInstallmentToMortgageDownpaymentPlan\"},{\"name\":\"payments\",\"kind\":\"object\",\"type\":\"MortgageDownpaymentPayment\",\"relationName\":\"MortgageDownpaymentPaymentToMortgageDownpaymentPlan\"}],\"dbName\":\"mortgage_downpayment_plans\"},\"MortgageDownpaymentInstallment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"planId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"plan\",\"kind\":\"object\",\"type\":\"MortgageDownpaymentPlan\",\"relationName\":\"MortgageDownpaymentInstallmentToMortgageDownpaymentPlan\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"dueDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"isPaid\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"paidDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"mortgage_downpayment_installments\"},\"MortgageDownpaymentPayment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"planId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"plan\",\"kind\":\"object\",\"type\":\"MortgageDownpaymentPlan\",\"relationName\":\"MortgageDownpaymentPaymentToMortgageDownpaymentPlan\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"paymentMethod\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reference\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"mortgage_downpayment_payments\"},\"MortgageTransition\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mortgageId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mortgage\",\"kind\":\"object\",\"type\":\"Mortgage\",\"relationName\":\"MortgageToMortgageTransition\"},{\"name\":\"fromState\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"toState\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trigger\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"metadata\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"transitionedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"mortgage_transitions\"},\"MortgageTransitionEvent\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mortgageId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mortgage\",\"kind\":\"object\",\"type\":\"Mortgage\",\"relationName\":\"MortgageToMortgageTransitionEvent\"},{\"name\":\"event\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"data\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"mortgage_transition_events\"},\"PaymentPlan\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"propertyId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"property\",\"kind\":\"object\",\"type\":\"Property\",\"relationName\":\"PaymentPlanToProperty\"},{\"name\":\"buyerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"buyer\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"PaymentPlanToUser\"},{\"name\":\"planType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"totalAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"downPaymentAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"downPaymentPaid\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"principalAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"interestRate\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"totalInterest\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"state\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"stateMetadata\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"contract\",\"kind\":\"object\",\"type\":\"Contract\",\"relationName\":\"ContractToPaymentPlan\"},{\"name\":\"schedules\",\"kind\":\"object\",\"type\":\"PaymentSchedule\",\"relationName\":\"PaymentPlanToPaymentSchedule\"},{\"name\":\"payments\",\"kind\":\"object\",\"type\":\"Payment\",\"relationName\":\"PaymentToPaymentPlan\"}],\"dbName\":\"payment_plans\"},\"PaymentSchedule\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"planId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"plan\",\"kind\":\"object\",\"type\":\"PaymentPlan\",\"relationName\":\"PaymentPlanToPaymentSchedule\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"frequency\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"startDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"endDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"installments\",\"kind\":\"object\",\"type\":\"PaymentInstallment\",\"relationName\":\"PaymentInstallmentToPaymentSchedule\"},{\"name\":\"payments\",\"kind\":\"object\",\"type\":\"Payment\",\"relationName\":\"PaymentToPaymentSchedule\"}],\"dbName\":\"payment_schedules\"},\"PaymentInstallment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scheduleId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"schedule\",\"kind\":\"object\",\"type\":\"PaymentSchedule\",\"relationName\":\"PaymentInstallmentToPaymentSchedule\"},{\"name\":\"installmentNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"principalAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"interestAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"dueDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"paidAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"paidDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"lateFee\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"payments\",\"kind\":\"object\",\"type\":\"Payment\",\"relationName\":\"PaymentToPaymentInstallment\"}],\"dbName\":\"payment_installments\"},\"Payment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"planId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"plan\",\"kind\":\"object\",\"type\":\"PaymentPlan\",\"relationName\":\"PaymentToPaymentPlan\"},{\"name\":\"scheduleId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"schedule\",\"kind\":\"object\",\"type\":\"PaymentSchedule\",\"relationName\":\"PaymentToPaymentSchedule\"},{\"name\":\"installmentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"installment\",\"kind\":\"object\",\"type\":\"PaymentInstallment\",\"relationName\":\"PaymentToPaymentInstallment\"},{\"name\":\"payerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"payer\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"PaymentToUser\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"principalAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"interestAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"lateFeeAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"paymentMethod\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reference\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"gatewayResponse\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"processedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"payments\"},\"Contract\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"propertyId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"property\",\"kind\":\"object\",\"type\":\"Property\",\"relationName\":\"ContractToProperty\"},{\"name\":\"paymentPlanId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"paymentPlan\",\"kind\":\"object\",\"type\":\"PaymentPlan\",\"relationName\":\"ContractToPaymentPlan\"},{\"name\":\"buyerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"buyer\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ContractBuyer\"},{\"name\":\"sellerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"seller\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ContractSeller\"},{\"name\":\"contractType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"contractNumber\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"startDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"endDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"signedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"terminatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"documents\",\"kind\":\"object\",\"type\":\"ContractDocument\",\"relationName\":\"ContractToContractDocument\"}],\"dbName\":\"contracts\"},\"ContractDocument\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"contractId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"contract\",\"kind\":\"object\",\"type\":\"Contract\",\"relationName\":\"ContractToContractDocument\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"contract_documents\"}},\"enums\":{},\"types\":{}}");
|
|
25
|
+
config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"isEmailVerified\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"googleId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"avatar\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tenantId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tenant\",\"kind\":\"object\",\"type\":\"Tenant\",\"relationName\":\"TenantToUser\"},{\"name\":\"userRoles\",\"kind\":\"object\",\"type\":\"UserRole\",\"relationName\":\"UserToUserRole\"},{\"name\":\"walletId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"wallet\",\"kind\":\"object\",\"type\":\"Wallet\",\"relationName\":\"UserToWallet\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"emailVerifiedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"emailVerificationToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastLoginAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"refreshTokens\",\"kind\":\"object\",\"type\":\"RefreshToken\",\"relationName\":\"RefreshTokenToUser\"},{\"name\":\"passwordResets\",\"kind\":\"object\",\"type\":\"PasswordReset\",\"relationName\":\"PasswordResetToUser\"},{\"name\":\"suspensions\",\"kind\":\"object\",\"type\":\"UserSuspension\",\"relationName\":\"UserToUserSuspension\"},{\"name\":\"emailPreferences\",\"kind\":\"object\",\"type\":\"EmailPreference\",\"relationName\":\"EmailPreferenceToUser\"},{\"name\":\"deviceEndpoints\",\"kind\":\"object\",\"type\":\"DeviceEndpoint\",\"relationName\":\"DeviceEndpointToUser\"},{\"name\":\"socials\",\"kind\":\"object\",\"type\":\"Social\",\"relationName\":\"SocialToUser\"},{\"name\":\"properties\",\"kind\":\"object\",\"type\":\"Property\",\"relationName\":\"PropertyToUser\"},{\"name\":\"mortgages\",\"kind\":\"object\",\"type\":\"Mortgage\",\"relationName\":\"MortgageBorrower\"},{\"name\":\"paymentPlans\",\"kind\":\"object\",\"type\":\"PaymentPlan\",\"relationName\":\"PaymentPlanToUser\"},{\"name\":\"contracts\",\"kind\":\"object\",\"type\":\"Contract\",\"relationName\":\"ContractBuyer\"},{\"name\":\"soldContracts\",\"kind\":\"object\",\"type\":\"Contract\",\"relationName\":\"ContractSeller\"},{\"name\":\"payments\",\"kind\":\"object\",\"type\":\"Payment\",\"relationName\":\"PaymentToUser\"}],\"dbName\":\"users\"},\"Role\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userRoles\",\"kind\":\"object\",\"type\":\"UserRole\",\"relationName\":\"RoleToUserRole\"},{\"name\":\"permissions\",\"kind\":\"object\",\"type\":\"RolePermission\",\"relationName\":\"RoleToRolePermission\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"roles\"},\"Permission\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"action\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roles\",\"kind\":\"object\",\"type\":\"RolePermission\",\"relationName\":\"PermissionToRolePermission\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"permissions\"},\"RolePermission\":{\"fields\":[{\"name\":\"roleId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"permissionId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"object\",\"type\":\"Role\",\"relationName\":\"RoleToRolePermission\"},{\"name\":\"permission\",\"kind\":\"object\",\"type\":\"Permission\",\"relationName\":\"PermissionToRolePermission\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"role_permissions\"},\"UserRole\":{\"fields\":[{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roleId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserRole\"},{\"name\":\"role\",\"kind\":\"object\",\"type\":\"Role\",\"relationName\":\"RoleToUserRole\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"user_roles\"},\"Tenant\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"subdomain\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"users\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"TenantToUser\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"tenants\"},\"RefreshToken\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"jti\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"RefreshTokenToUser\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"refresh_tokens\"},\"PasswordReset\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"PasswordResetToUser\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"usedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"password_resets\"},\"UserSuspension\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserSuspension\"},{\"name\":\"reason\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"suspendedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"liftedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"user_suspensions\"},\"EmailPreference\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"EmailPreferenceToUser\"},{\"name\":\"marketingEmails\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"transactionalEmails\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"propertyAlerts\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"paymentReminders\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"email_preferences\"},\"DeviceEndpoint\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"DeviceEndpointToUser\"},{\"name\":\"endpoint\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"platform\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"device_endpoints\"},\"Social\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SocialToUser\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"socialId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"socials\"},\"OAuthState\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"state\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"oauth_states\"},\"Wallet\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"balance\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"currency\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToWallet\"},{\"name\":\"transactions\",\"kind\":\"object\",\"type\":\"Transaction\",\"relationName\":\"TransactionToWallet\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"wallets\"},\"Transaction\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"walletId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"wallet\",\"kind\":\"object\",\"type\":\"Wallet\",\"relationName\":\"TransactionToWallet\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reference\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"transactions\"},\"Settings\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"settings\"},\"Property\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"PropertyToUser\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"propertyType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"country\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"currency\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"city\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"district\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"zipCode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"streetAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nBedrooms\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nBathrooms\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nParkingSpots\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"price\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"longitude\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"latitude\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"area\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayImageId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayImage\",\"kind\":\"object\",\"type\":\"PropertyMedia\",\"relationName\":\"DisplayImage\"},{\"name\":\"isPublished\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"publishedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"documents\",\"kind\":\"object\",\"type\":\"PropertyDocument\",\"relationName\":\"PropertyToPropertyDocument\"},{\"name\":\"media\",\"kind\":\"object\",\"type\":\"PropertyMedia\",\"relationName\":\"PropertyMedia\"},{\"name\":\"amenities\",\"kind\":\"object\",\"type\":\"PropertyAmenity\",\"relationName\":\"PropertyToPropertyAmenity\"},{\"name\":\"mortgages\",\"kind\":\"object\",\"type\":\"Mortgage\",\"relationName\":\"MortgageToProperty\"},{\"name\":\"paymentPlans\",\"kind\":\"object\",\"type\":\"PaymentPlan\",\"relationName\":\"PaymentPlanToProperty\"},{\"name\":\"contracts\",\"kind\":\"object\",\"type\":\"Contract\",\"relationName\":\"ContractToProperty\"}],\"dbName\":\"properties\"},\"PropertyMedia\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"propertyId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"property\",\"kind\":\"object\",\"type\":\"Property\",\"relationName\":\"PropertyMedia\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"caption\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"order\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"displayForProperties\",\"kind\":\"object\",\"type\":\"Property\",\"relationName\":\"DisplayImage\"}],\"dbName\":\"property_media\"},\"PropertyDocument\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"propertyId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"property\",\"kind\":\"object\",\"type\":\"Property\",\"relationName\":\"PropertyToPropertyDocument\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"property_documents\"},\"Amenity\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"properties\",\"kind\":\"object\",\"type\":\"PropertyAmenity\",\"relationName\":\"AmenityToPropertyAmenity\"}],\"dbName\":\"amenities\"},\"PropertyAmenity\":{\"fields\":[{\"name\":\"propertyId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"amenityId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"property\",\"kind\":\"object\",\"type\":\"Property\",\"relationName\":\"PropertyToPropertyAmenity\"},{\"name\":\"amenity\",\"kind\":\"object\",\"type\":\"Amenity\",\"relationName\":\"AmenityToPropertyAmenity\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"property_amenities\"},\"Mortgage\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"propertyId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"property\",\"kind\":\"object\",\"type\":\"Property\",\"relationName\":\"MortgageToProperty\"},{\"name\":\"borrowerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"borrower\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"MortgageBorrower\"},{\"name\":\"mortgageTypeId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mortgageType\",\"kind\":\"object\",\"type\":\"MortgageType\",\"relationName\":\"MortgageToMortgageType\"},{\"name\":\"downpaymentPlanId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"downpaymentPlan\",\"kind\":\"object\",\"type\":\"MortgageDownpaymentPlan\",\"relationName\":\"MortgageToMortgageDownpaymentPlan\"},{\"name\":\"principal\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"downPayment\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"downPaymentPaid\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"termMonths\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"interestRate\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"monthlyPayment\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"state\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"stateMetadata\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastReminderSentAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"documents\",\"kind\":\"object\",\"type\":\"MortgageDocument\",\"relationName\":\"MortgageToMortgageDocument\"},{\"name\":\"steps\",\"kind\":\"object\",\"type\":\"MortgageStep\",\"relationName\":\"MortgageToMortgageStep\"},{\"name\":\"transitions\",\"kind\":\"object\",\"type\":\"MortgageTransition\",\"relationName\":\"MortgageToMortgageTransition\"},{\"name\":\"transitionEvents\",\"kind\":\"object\",\"type\":\"MortgageTransitionEvent\",\"relationName\":\"MortgageToMortgageTransitionEvent\"}],\"dbName\":\"mortgages\"},\"MortgageType\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"mortgages\",\"kind\":\"object\",\"type\":\"Mortgage\",\"relationName\":\"MortgageToMortgageType\"}],\"dbName\":\"mortgage_types\"},\"MortgageDocument\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mortgageId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mortgage\",\"kind\":\"object\",\"type\":\"Mortgage\",\"relationName\":\"MortgageToMortgageDocument\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"mortgage_documents\"},\"MortgageStep\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mortgageId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mortgage\",\"kind\":\"object\",\"type\":\"Mortgage\",\"relationName\":\"MortgageToMortgageStep\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"order\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"isCompleted\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"completedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"mortgage_steps\"},\"MortgageDownpaymentPlan\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"totalAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"paidAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"startDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"endDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"mortgages\",\"kind\":\"object\",\"type\":\"Mortgage\",\"relationName\":\"MortgageToMortgageDownpaymentPlan\"},{\"name\":\"installments\",\"kind\":\"object\",\"type\":\"MortgageDownpaymentInstallment\",\"relationName\":\"MortgageDownpaymentInstallmentToMortgageDownpaymentPlan\"},{\"name\":\"payments\",\"kind\":\"object\",\"type\":\"MortgageDownpaymentPayment\",\"relationName\":\"MortgageDownpaymentPaymentToMortgageDownpaymentPlan\"}],\"dbName\":\"mortgage_downpayment_plans\"},\"MortgageDownpaymentInstallment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"planId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"plan\",\"kind\":\"object\",\"type\":\"MortgageDownpaymentPlan\",\"relationName\":\"MortgageDownpaymentInstallmentToMortgageDownpaymentPlan\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"dueDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"isPaid\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"paidDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"mortgage_downpayment_installments\"},\"MortgageDownpaymentPayment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"planId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"plan\",\"kind\":\"object\",\"type\":\"MortgageDownpaymentPlan\",\"relationName\":\"MortgageDownpaymentPaymentToMortgageDownpaymentPlan\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"paymentMethod\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reference\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"mortgage_downpayment_payments\"},\"MortgageTransition\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mortgageId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mortgage\",\"kind\":\"object\",\"type\":\"Mortgage\",\"relationName\":\"MortgageToMortgageTransition\"},{\"name\":\"fromState\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"toState\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"trigger\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"metadata\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"transitionedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"mortgage_transitions\"},\"MortgageTransitionEvent\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mortgageId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mortgage\",\"kind\":\"object\",\"type\":\"Mortgage\",\"relationName\":\"MortgageToMortgageTransitionEvent\"},{\"name\":\"event\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"data\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"mortgage_transition_events\"},\"PaymentPlan\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"propertyId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"property\",\"kind\":\"object\",\"type\":\"Property\",\"relationName\":\"PaymentPlanToProperty\"},{\"name\":\"buyerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"buyer\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"PaymentPlanToUser\"},{\"name\":\"planType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"totalAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"downPaymentAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"downPaymentPaid\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"principalAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"interestRate\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"totalInterest\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"state\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"stateMetadata\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"contract\",\"kind\":\"object\",\"type\":\"Contract\",\"relationName\":\"ContractToPaymentPlan\"},{\"name\":\"schedules\",\"kind\":\"object\",\"type\":\"PaymentSchedule\",\"relationName\":\"PaymentPlanToPaymentSchedule\"},{\"name\":\"payments\",\"kind\":\"object\",\"type\":\"Payment\",\"relationName\":\"PaymentToPaymentPlan\"}],\"dbName\":\"payment_plans\"},\"PaymentSchedule\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"planId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"plan\",\"kind\":\"object\",\"type\":\"PaymentPlan\",\"relationName\":\"PaymentPlanToPaymentSchedule\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"frequency\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"startDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"endDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"installments\",\"kind\":\"object\",\"type\":\"PaymentInstallment\",\"relationName\":\"PaymentInstallmentToPaymentSchedule\"},{\"name\":\"payments\",\"kind\":\"object\",\"type\":\"Payment\",\"relationName\":\"PaymentToPaymentSchedule\"}],\"dbName\":\"payment_schedules\"},\"PaymentInstallment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scheduleId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"schedule\",\"kind\":\"object\",\"type\":\"PaymentSchedule\",\"relationName\":\"PaymentInstallmentToPaymentSchedule\"},{\"name\":\"installmentNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"principalAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"interestAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"dueDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"paidAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"paidDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"lateFee\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"payments\",\"kind\":\"object\",\"type\":\"Payment\",\"relationName\":\"PaymentToPaymentInstallment\"}],\"dbName\":\"payment_installments\"},\"Payment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"planId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"plan\",\"kind\":\"object\",\"type\":\"PaymentPlan\",\"relationName\":\"PaymentToPaymentPlan\"},{\"name\":\"scheduleId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"schedule\",\"kind\":\"object\",\"type\":\"PaymentSchedule\",\"relationName\":\"PaymentToPaymentSchedule\"},{\"name\":\"installmentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"installment\",\"kind\":\"object\",\"type\":\"PaymentInstallment\",\"relationName\":\"PaymentToPaymentInstallment\"},{\"name\":\"payerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"payer\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"PaymentToUser\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"principalAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"interestAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"lateFeeAmount\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"paymentMethod\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reference\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"gatewayResponse\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"processedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"payments\"},\"Contract\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"propertyId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"property\",\"kind\":\"object\",\"type\":\"Property\",\"relationName\":\"ContractToProperty\"},{\"name\":\"paymentPlanId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"paymentPlan\",\"kind\":\"object\",\"type\":\"PaymentPlan\",\"relationName\":\"ContractToPaymentPlan\"},{\"name\":\"buyerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"buyer\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ContractBuyer\"},{\"name\":\"sellerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"seller\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ContractSeller\"},{\"name\":\"contractType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"contractNumber\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"startDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"endDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"signedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"terminatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"documents\",\"kind\":\"object\",\"type\":\"ContractDocument\",\"relationName\":\"ContractToContractDocument\"}],\"dbName\":\"contracts\"},\"ContractDocument\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"contractId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"contract\",\"kind\":\"object\",\"type\":\"Contract\",\"relationName\":\"ContractToContractDocument\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"contract_documents\"}},\"enums\":{},\"types\":{}}");
|
|
26
26
|
async function decodeBase64AsWasm(wasmBase64) {
|
|
27
27
|
const { Buffer } = await import('node:buffer');
|
|
28
28
|
const wasmArray = Buffer.from(wasmBase64, 'base64');
|
|
@@ -2754,7 +2754,7 @@ export declare const TenantScalarFieldEnum: {
|
|
|
2754
2754
|
export type TenantScalarFieldEnum = (typeof TenantScalarFieldEnum)[keyof typeof TenantScalarFieldEnum];
|
|
2755
2755
|
export declare const RefreshTokenScalarFieldEnum: {
|
|
2756
2756
|
readonly id: "id";
|
|
2757
|
-
readonly
|
|
2757
|
+
readonly jti: "jti";
|
|
2758
2758
|
readonly token: "token";
|
|
2759
2759
|
readonly userId: "userId";
|
|
2760
2760
|
readonly expiresAt: "expiresAt";
|
|
@@ -3159,7 +3159,7 @@ export declare const TenantOrderByRelevanceFieldEnum: {
|
|
|
3159
3159
|
export type TenantOrderByRelevanceFieldEnum = (typeof TenantOrderByRelevanceFieldEnum)[keyof typeof TenantOrderByRelevanceFieldEnum];
|
|
3160
3160
|
export declare const RefreshTokenOrderByRelevanceFieldEnum: {
|
|
3161
3161
|
readonly id: "id";
|
|
3162
|
-
readonly
|
|
3162
|
+
readonly jti: "jti";
|
|
3163
3163
|
readonly token: "token";
|
|
3164
3164
|
readonly userId: "userId";
|
|
3165
3165
|
};
|
|
@@ -168,7 +168,7 @@ export const TenantScalarFieldEnum = {
|
|
|
168
168
|
};
|
|
169
169
|
export const RefreshTokenScalarFieldEnum = {
|
|
170
170
|
id: 'id',
|
|
171
|
-
|
|
171
|
+
jti: 'jti',
|
|
172
172
|
token: 'token',
|
|
173
173
|
userId: 'userId',
|
|
174
174
|
expiresAt: 'expiresAt',
|
|
@@ -535,7 +535,7 @@ export const TenantOrderByRelevanceFieldEnum = {
|
|
|
535
535
|
};
|
|
536
536
|
export const RefreshTokenOrderByRelevanceFieldEnum = {
|
|
537
537
|
id: 'id',
|
|
538
|
-
|
|
538
|
+
jti: 'jti',
|
|
539
539
|
token: 'token',
|
|
540
540
|
userId: 'userId'
|
|
541
541
|
};
|
|
@@ -132,7 +132,7 @@ export declare const TenantScalarFieldEnum: {
|
|
|
132
132
|
export type TenantScalarFieldEnum = (typeof TenantScalarFieldEnum)[keyof typeof TenantScalarFieldEnum];
|
|
133
133
|
export declare const RefreshTokenScalarFieldEnum: {
|
|
134
134
|
readonly id: "id";
|
|
135
|
-
readonly
|
|
135
|
+
readonly jti: "jti";
|
|
136
136
|
readonly token: "token";
|
|
137
137
|
readonly userId: "userId";
|
|
138
138
|
readonly expiresAt: "expiresAt";
|
|
@@ -537,7 +537,7 @@ export declare const TenantOrderByRelevanceFieldEnum: {
|
|
|
537
537
|
export type TenantOrderByRelevanceFieldEnum = (typeof TenantOrderByRelevanceFieldEnum)[keyof typeof TenantOrderByRelevanceFieldEnum];
|
|
538
538
|
export declare const RefreshTokenOrderByRelevanceFieldEnum: {
|
|
539
539
|
readonly id: "id";
|
|
540
|
-
readonly
|
|
540
|
+
readonly jti: "jti";
|
|
541
541
|
readonly token: "token";
|
|
542
542
|
readonly userId: "userId";
|
|
543
543
|
};
|
|
@@ -140,7 +140,7 @@ export const TenantScalarFieldEnum = {
|
|
|
140
140
|
};
|
|
141
141
|
export const RefreshTokenScalarFieldEnum = {
|
|
142
142
|
id: 'id',
|
|
143
|
-
|
|
143
|
+
jti: 'jti',
|
|
144
144
|
token: 'token',
|
|
145
145
|
userId: 'userId',
|
|
146
146
|
expiresAt: 'expiresAt',
|
|
@@ -507,7 +507,7 @@ export const TenantOrderByRelevanceFieldEnum = {
|
|
|
507
507
|
};
|
|
508
508
|
export const RefreshTokenOrderByRelevanceFieldEnum = {
|
|
509
509
|
id: 'id',
|
|
510
|
-
|
|
510
|
+
jti: 'jti',
|
|
511
511
|
token: 'token',
|
|
512
512
|
userId: 'userId'
|
|
513
513
|
};
|
|
@@ -12,7 +12,7 @@ export type AggregateRefreshToken = {
|
|
|
12
12
|
};
|
|
13
13
|
export type RefreshTokenMinAggregateOutputType = {
|
|
14
14
|
id: string | null;
|
|
15
|
-
|
|
15
|
+
jti: string | null;
|
|
16
16
|
token: string | null;
|
|
17
17
|
userId: string | null;
|
|
18
18
|
expiresAt: Date | null;
|
|
@@ -20,7 +20,7 @@ export type RefreshTokenMinAggregateOutputType = {
|
|
|
20
20
|
};
|
|
21
21
|
export type RefreshTokenMaxAggregateOutputType = {
|
|
22
22
|
id: string | null;
|
|
23
|
-
|
|
23
|
+
jti: string | null;
|
|
24
24
|
token: string | null;
|
|
25
25
|
userId: string | null;
|
|
26
26
|
expiresAt: Date | null;
|
|
@@ -28,7 +28,7 @@ export type RefreshTokenMaxAggregateOutputType = {
|
|
|
28
28
|
};
|
|
29
29
|
export type RefreshTokenCountAggregateOutputType = {
|
|
30
30
|
id: number;
|
|
31
|
-
|
|
31
|
+
jti: number;
|
|
32
32
|
token: number;
|
|
33
33
|
userId: number;
|
|
34
34
|
expiresAt: number;
|
|
@@ -37,7 +37,7 @@ export type RefreshTokenCountAggregateOutputType = {
|
|
|
37
37
|
};
|
|
38
38
|
export type RefreshTokenMinAggregateInputType = {
|
|
39
39
|
id?: true;
|
|
40
|
-
|
|
40
|
+
jti?: true;
|
|
41
41
|
token?: true;
|
|
42
42
|
userId?: true;
|
|
43
43
|
expiresAt?: true;
|
|
@@ -45,7 +45,7 @@ export type RefreshTokenMinAggregateInputType = {
|
|
|
45
45
|
};
|
|
46
46
|
export type RefreshTokenMaxAggregateInputType = {
|
|
47
47
|
id?: true;
|
|
48
|
-
|
|
48
|
+
jti?: true;
|
|
49
49
|
token?: true;
|
|
50
50
|
userId?: true;
|
|
51
51
|
expiresAt?: true;
|
|
@@ -53,7 +53,7 @@ export type RefreshTokenMaxAggregateInputType = {
|
|
|
53
53
|
};
|
|
54
54
|
export type RefreshTokenCountAggregateInputType = {
|
|
55
55
|
id?: true;
|
|
56
|
-
|
|
56
|
+
jti?: true;
|
|
57
57
|
token?: true;
|
|
58
58
|
userId?: true;
|
|
59
59
|
expiresAt?: true;
|
|
@@ -124,7 +124,7 @@ export type RefreshTokenGroupByArgs<ExtArgs extends runtime.Types.Extensions.Int
|
|
|
124
124
|
};
|
|
125
125
|
export type RefreshTokenGroupByOutputType = {
|
|
126
126
|
id: string;
|
|
127
|
-
|
|
127
|
+
jti: string | null;
|
|
128
128
|
token: string | null;
|
|
129
129
|
userId: string;
|
|
130
130
|
expiresAt: Date;
|
|
@@ -141,7 +141,7 @@ export type RefreshTokenWhereInput = {
|
|
|
141
141
|
OR?: Prisma.RefreshTokenWhereInput[];
|
|
142
142
|
NOT?: Prisma.RefreshTokenWhereInput | Prisma.RefreshTokenWhereInput[];
|
|
143
143
|
id?: Prisma.StringFilter<"RefreshToken"> | string;
|
|
144
|
-
|
|
144
|
+
jti?: Prisma.StringNullableFilter<"RefreshToken"> | string | null;
|
|
145
145
|
token?: Prisma.StringNullableFilter<"RefreshToken"> | string | null;
|
|
146
146
|
userId?: Prisma.StringFilter<"RefreshToken"> | string;
|
|
147
147
|
expiresAt?: Prisma.DateTimeFilter<"RefreshToken"> | Date | string;
|
|
@@ -150,7 +150,7 @@ export type RefreshTokenWhereInput = {
|
|
|
150
150
|
};
|
|
151
151
|
export type RefreshTokenOrderByWithRelationInput = {
|
|
152
152
|
id?: Prisma.SortOrder;
|
|
153
|
-
|
|
153
|
+
jti?: Prisma.SortOrderInput | Prisma.SortOrder;
|
|
154
154
|
token?: Prisma.SortOrderInput | Prisma.SortOrder;
|
|
155
155
|
userId?: Prisma.SortOrder;
|
|
156
156
|
expiresAt?: Prisma.SortOrder;
|
|
@@ -160,7 +160,7 @@ export type RefreshTokenOrderByWithRelationInput = {
|
|
|
160
160
|
};
|
|
161
161
|
export type RefreshTokenWhereUniqueInput = Prisma.AtLeast<{
|
|
162
162
|
id?: string;
|
|
163
|
-
|
|
163
|
+
jti?: string;
|
|
164
164
|
AND?: Prisma.RefreshTokenWhereInput | Prisma.RefreshTokenWhereInput[];
|
|
165
165
|
OR?: Prisma.RefreshTokenWhereInput[];
|
|
166
166
|
NOT?: Prisma.RefreshTokenWhereInput | Prisma.RefreshTokenWhereInput[];
|
|
@@ -169,10 +169,10 @@ export type RefreshTokenWhereUniqueInput = Prisma.AtLeast<{
|
|
|
169
169
|
expiresAt?: Prisma.DateTimeFilter<"RefreshToken"> | Date | string;
|
|
170
170
|
createdAt?: Prisma.DateTimeFilter<"RefreshToken"> | Date | string;
|
|
171
171
|
user?: Prisma.XOR<Prisma.UserScalarRelationFilter, Prisma.UserWhereInput>;
|
|
172
|
-
}, "id" | "
|
|
172
|
+
}, "id" | "jti">;
|
|
173
173
|
export type RefreshTokenOrderByWithAggregationInput = {
|
|
174
174
|
id?: Prisma.SortOrder;
|
|
175
|
-
|
|
175
|
+
jti?: Prisma.SortOrderInput | Prisma.SortOrder;
|
|
176
176
|
token?: Prisma.SortOrderInput | Prisma.SortOrder;
|
|
177
177
|
userId?: Prisma.SortOrder;
|
|
178
178
|
expiresAt?: Prisma.SortOrder;
|
|
@@ -186,7 +186,7 @@ export type RefreshTokenScalarWhereWithAggregatesInput = {
|
|
|
186
186
|
OR?: Prisma.RefreshTokenScalarWhereWithAggregatesInput[];
|
|
187
187
|
NOT?: Prisma.RefreshTokenScalarWhereWithAggregatesInput | Prisma.RefreshTokenScalarWhereWithAggregatesInput[];
|
|
188
188
|
id?: Prisma.StringWithAggregatesFilter<"RefreshToken"> | string;
|
|
189
|
-
|
|
189
|
+
jti?: Prisma.StringNullableWithAggregatesFilter<"RefreshToken"> | string | null;
|
|
190
190
|
token?: Prisma.StringNullableWithAggregatesFilter<"RefreshToken"> | string | null;
|
|
191
191
|
userId?: Prisma.StringWithAggregatesFilter<"RefreshToken"> | string;
|
|
192
192
|
expiresAt?: Prisma.DateTimeWithAggregatesFilter<"RefreshToken"> | Date | string;
|
|
@@ -194,7 +194,7 @@ export type RefreshTokenScalarWhereWithAggregatesInput = {
|
|
|
194
194
|
};
|
|
195
195
|
export type RefreshTokenCreateInput = {
|
|
196
196
|
id?: string;
|
|
197
|
-
|
|
197
|
+
jti?: string | null;
|
|
198
198
|
token?: string | null;
|
|
199
199
|
expiresAt: Date | string;
|
|
200
200
|
createdAt?: Date | string;
|
|
@@ -202,7 +202,7 @@ export type RefreshTokenCreateInput = {
|
|
|
202
202
|
};
|
|
203
203
|
export type RefreshTokenUncheckedCreateInput = {
|
|
204
204
|
id?: string;
|
|
205
|
-
|
|
205
|
+
jti?: string | null;
|
|
206
206
|
token?: string | null;
|
|
207
207
|
userId: string;
|
|
208
208
|
expiresAt: Date | string;
|
|
@@ -210,7 +210,7 @@ export type RefreshTokenUncheckedCreateInput = {
|
|
|
210
210
|
};
|
|
211
211
|
export type RefreshTokenUpdateInput = {
|
|
212
212
|
id?: Prisma.StringFieldUpdateOperationsInput | string;
|
|
213
|
-
|
|
213
|
+
jti?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
214
214
|
token?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
215
215
|
expiresAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
|
|
216
216
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
|
|
@@ -218,7 +218,7 @@ export type RefreshTokenUpdateInput = {
|
|
|
218
218
|
};
|
|
219
219
|
export type RefreshTokenUncheckedUpdateInput = {
|
|
220
220
|
id?: Prisma.StringFieldUpdateOperationsInput | string;
|
|
221
|
-
|
|
221
|
+
jti?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
222
222
|
token?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
223
223
|
userId?: Prisma.StringFieldUpdateOperationsInput | string;
|
|
224
224
|
expiresAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
|
|
@@ -226,7 +226,7 @@ export type RefreshTokenUncheckedUpdateInput = {
|
|
|
226
226
|
};
|
|
227
227
|
export type RefreshTokenCreateManyInput = {
|
|
228
228
|
id?: string;
|
|
229
|
-
|
|
229
|
+
jti?: string | null;
|
|
230
230
|
token?: string | null;
|
|
231
231
|
userId: string;
|
|
232
232
|
expiresAt: Date | string;
|
|
@@ -234,14 +234,14 @@ export type RefreshTokenCreateManyInput = {
|
|
|
234
234
|
};
|
|
235
235
|
export type RefreshTokenUpdateManyMutationInput = {
|
|
236
236
|
id?: Prisma.StringFieldUpdateOperationsInput | string;
|
|
237
|
-
|
|
237
|
+
jti?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
238
238
|
token?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
239
239
|
expiresAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
|
|
240
240
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
|
|
241
241
|
};
|
|
242
242
|
export type RefreshTokenUncheckedUpdateManyInput = {
|
|
243
243
|
id?: Prisma.StringFieldUpdateOperationsInput | string;
|
|
244
|
-
|
|
244
|
+
jti?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
245
245
|
token?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
246
246
|
userId?: Prisma.StringFieldUpdateOperationsInput | string;
|
|
247
247
|
expiresAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
|
|
@@ -262,7 +262,7 @@ export type RefreshTokenOrderByRelevanceInput = {
|
|
|
262
262
|
};
|
|
263
263
|
export type RefreshTokenCountOrderByAggregateInput = {
|
|
264
264
|
id?: Prisma.SortOrder;
|
|
265
|
-
|
|
265
|
+
jti?: Prisma.SortOrder;
|
|
266
266
|
token?: Prisma.SortOrder;
|
|
267
267
|
userId?: Prisma.SortOrder;
|
|
268
268
|
expiresAt?: Prisma.SortOrder;
|
|
@@ -270,7 +270,7 @@ export type RefreshTokenCountOrderByAggregateInput = {
|
|
|
270
270
|
};
|
|
271
271
|
export type RefreshTokenMaxOrderByAggregateInput = {
|
|
272
272
|
id?: Prisma.SortOrder;
|
|
273
|
-
|
|
273
|
+
jti?: Prisma.SortOrder;
|
|
274
274
|
token?: Prisma.SortOrder;
|
|
275
275
|
userId?: Prisma.SortOrder;
|
|
276
276
|
expiresAt?: Prisma.SortOrder;
|
|
@@ -278,7 +278,7 @@ export type RefreshTokenMaxOrderByAggregateInput = {
|
|
|
278
278
|
};
|
|
279
279
|
export type RefreshTokenMinOrderByAggregateInput = {
|
|
280
280
|
id?: Prisma.SortOrder;
|
|
281
|
-
|
|
281
|
+
jti?: Prisma.SortOrder;
|
|
282
282
|
token?: Prisma.SortOrder;
|
|
283
283
|
userId?: Prisma.SortOrder;
|
|
284
284
|
expiresAt?: Prisma.SortOrder;
|
|
@@ -324,14 +324,14 @@ export type RefreshTokenUncheckedUpdateManyWithoutUserNestedInput = {
|
|
|
324
324
|
};
|
|
325
325
|
export type RefreshTokenCreateWithoutUserInput = {
|
|
326
326
|
id?: string;
|
|
327
|
-
|
|
327
|
+
jti?: string | null;
|
|
328
328
|
token?: string | null;
|
|
329
329
|
expiresAt: Date | string;
|
|
330
330
|
createdAt?: Date | string;
|
|
331
331
|
};
|
|
332
332
|
export type RefreshTokenUncheckedCreateWithoutUserInput = {
|
|
333
333
|
id?: string;
|
|
334
|
-
|
|
334
|
+
jti?: string | null;
|
|
335
335
|
token?: string | null;
|
|
336
336
|
expiresAt: Date | string;
|
|
337
337
|
createdAt?: Date | string;
|
|
@@ -362,7 +362,7 @@ export type RefreshTokenScalarWhereInput = {
|
|
|
362
362
|
OR?: Prisma.RefreshTokenScalarWhereInput[];
|
|
363
363
|
NOT?: Prisma.RefreshTokenScalarWhereInput | Prisma.RefreshTokenScalarWhereInput[];
|
|
364
364
|
id?: Prisma.StringFilter<"RefreshToken"> | string;
|
|
365
|
-
|
|
365
|
+
jti?: Prisma.StringNullableFilter<"RefreshToken"> | string | null;
|
|
366
366
|
token?: Prisma.StringNullableFilter<"RefreshToken"> | string | null;
|
|
367
367
|
userId?: Prisma.StringFilter<"RefreshToken"> | string;
|
|
368
368
|
expiresAt?: Prisma.DateTimeFilter<"RefreshToken"> | Date | string;
|
|
@@ -370,35 +370,35 @@ export type RefreshTokenScalarWhereInput = {
|
|
|
370
370
|
};
|
|
371
371
|
export type RefreshTokenCreateManyUserInput = {
|
|
372
372
|
id?: string;
|
|
373
|
-
|
|
373
|
+
jti?: string | null;
|
|
374
374
|
token?: string | null;
|
|
375
375
|
expiresAt: Date | string;
|
|
376
376
|
createdAt?: Date | string;
|
|
377
377
|
};
|
|
378
378
|
export type RefreshTokenUpdateWithoutUserInput = {
|
|
379
379
|
id?: Prisma.StringFieldUpdateOperationsInput | string;
|
|
380
|
-
|
|
380
|
+
jti?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
381
381
|
token?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
382
382
|
expiresAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
|
|
383
383
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
|
|
384
384
|
};
|
|
385
385
|
export type RefreshTokenUncheckedUpdateWithoutUserInput = {
|
|
386
386
|
id?: Prisma.StringFieldUpdateOperationsInput | string;
|
|
387
|
-
|
|
387
|
+
jti?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
388
388
|
token?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
389
389
|
expiresAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
|
|
390
390
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
|
|
391
391
|
};
|
|
392
392
|
export type RefreshTokenUncheckedUpdateManyWithoutUserInput = {
|
|
393
393
|
id?: Prisma.StringFieldUpdateOperationsInput | string;
|
|
394
|
-
|
|
394
|
+
jti?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
395
395
|
token?: Prisma.NullableStringFieldUpdateOperationsInput | string | null;
|
|
396
396
|
expiresAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
|
|
397
397
|
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string;
|
|
398
398
|
};
|
|
399
399
|
export type RefreshTokenSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
|
|
400
400
|
id?: boolean;
|
|
401
|
-
|
|
401
|
+
jti?: boolean;
|
|
402
402
|
token?: boolean;
|
|
403
403
|
userId?: boolean;
|
|
404
404
|
expiresAt?: boolean;
|
|
@@ -407,13 +407,13 @@ export type RefreshTokenSelect<ExtArgs extends runtime.Types.Extensions.Internal
|
|
|
407
407
|
}, ExtArgs["result"]["refreshToken"]>;
|
|
408
408
|
export type RefreshTokenSelectScalar = {
|
|
409
409
|
id?: boolean;
|
|
410
|
-
|
|
410
|
+
jti?: boolean;
|
|
411
411
|
token?: boolean;
|
|
412
412
|
userId?: boolean;
|
|
413
413
|
expiresAt?: boolean;
|
|
414
414
|
createdAt?: boolean;
|
|
415
415
|
};
|
|
416
|
-
export type RefreshTokenOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "
|
|
416
|
+
export type RefreshTokenOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "jti" | "token" | "userId" | "expiresAt" | "createdAt", ExtArgs["result"]["refreshToken"]>;
|
|
417
417
|
export type RefreshTokenInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
|
|
418
418
|
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>;
|
|
419
419
|
};
|
|
@@ -424,7 +424,7 @@ export type $RefreshTokenPayload<ExtArgs extends runtime.Types.Extensions.Intern
|
|
|
424
424
|
};
|
|
425
425
|
scalars: runtime.Types.Extensions.GetPayloadResult<{
|
|
426
426
|
id: string;
|
|
427
|
-
|
|
427
|
+
jti: string | null;
|
|
428
428
|
token: string | null;
|
|
429
429
|
userId: string;
|
|
430
430
|
expiresAt: Date;
|
|
@@ -733,7 +733,7 @@ export interface Prisma__RefreshTokenClient<T, Null = never, ExtArgs extends run
|
|
|
733
733
|
*/
|
|
734
734
|
export interface RefreshTokenFieldRefs {
|
|
735
735
|
readonly id: Prisma.FieldRef<"RefreshToken", 'String'>;
|
|
736
|
-
readonly
|
|
736
|
+
readonly jti: Prisma.FieldRef<"RefreshToken", 'String'>;
|
|
737
737
|
readonly token: Prisma.FieldRef<"RefreshToken", 'String'>;
|
|
738
738
|
readonly userId: Prisma.FieldRef<"RefreshToken", 'String'>;
|
|
739
739
|
readonly expiresAt: Prisma.FieldRef<"RefreshToken", 'DateTime'>;
|
package/package.json
CHANGED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Warnings:
|
|
3
|
+
|
|
4
|
+
- You are about to drop the column `tokenHash` on the `refresh_tokens` table. All the data in the column will be lost.
|
|
5
|
+
- A unique constraint covering the columns `[jti]` on the table `refresh_tokens` will be added. If there are existing duplicate values, this will fail.
|
|
6
|
+
|
|
7
|
+
*/
|
|
8
|
+
-- DropIndex
|
|
9
|
+
DROP INDEX `refresh_tokens_tokenHash_key` ON `refresh_tokens`;
|
|
10
|
+
|
|
11
|
+
-- AlterTable
|
|
12
|
+
ALTER TABLE `refresh_tokens` DROP COLUMN `tokenHash`,
|
|
13
|
+
ADD COLUMN `jti` VARCHAR(255) NULL;
|
|
14
|
+
|
|
15
|
+
-- CreateIndex
|
|
16
|
+
CREATE UNIQUE INDEX `refresh_tokens_jti_key` ON `refresh_tokens`(`jti`);
|
package/prisma/schema.prisma
CHANGED
|
@@ -124,8 +124,8 @@ model Tenant {
|
|
|
124
124
|
|
|
125
125
|
model RefreshToken {
|
|
126
126
|
id String @id @default(cuid())
|
|
127
|
-
//
|
|
128
|
-
|
|
127
|
+
// Use the JWT `jti` for indexed lookups and keep the raw JWT (optional)
|
|
128
|
+
jti String? @unique @db.VarChar(255)
|
|
129
129
|
token String? @db.LongText
|
|
130
130
|
userId String
|
|
131
131
|
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|