feat(partners): add utility functions for partner business activity allocation limits and remaining licenses
- Implemented `getPartnerBusinessActivityAllocationLimits` to retrieve allocation limits for a partner's business activity. - Added `ensurePartnerBusinessActivityHasRemainingAllocation` to validate remaining allocation credits. - Created `getPartnerRemainingLicenses` to count remaining licenses for a partner. - Developed `getPartnerFirstRemainingLicense` to fetch the first unused license for a partner. - Introduced `ensurePartnerHasRemainingLicense` to ensure a partner has at least one unused license.
This commit is contained in:
@@ -1,37 +1,3 @@
|
||||
model License {
|
||||
id String @id @default(ulid())
|
||||
accounts_limit Int @default(2)
|
||||
|
||||
created_at DateTime @default(now()) @db.Timestamp(0)
|
||||
updated_at DateTime @updatedAt() @db.Timestamp(0)
|
||||
|
||||
charge_transaction_id String
|
||||
charge_transaction LicenseChargeTransaction @relation(fields: [charge_transaction_id], references: [id])
|
||||
|
||||
activation LicenseActivation?
|
||||
account_allocations PartnerAccountQuotaAllocation[]
|
||||
|
||||
@@map("licenses")
|
||||
}
|
||||
|
||||
model LicenseActivation {
|
||||
id String @id @unique() @default(ulid())
|
||||
starts_at DateTime
|
||||
expires_at DateTime
|
||||
|
||||
created_at DateTime @default(now()) @db.Timestamp(0)
|
||||
updated_at DateTime @updatedAt() @db.Timestamp(0)
|
||||
|
||||
license_id String @unique
|
||||
license License @relation(fields: [license_id], references: [id])
|
||||
|
||||
business_activity_id String @unique
|
||||
business_activity BusinessActivity @relation(fields: [business_activity_id], references: [id])
|
||||
license_renews LicenseRenew[]
|
||||
|
||||
@@map("licenses_activated")
|
||||
}
|
||||
|
||||
model LicenseChargeTransaction {
|
||||
id String @id @default(ulid())
|
||||
activation_expires_at DateTime
|
||||
@@ -49,20 +15,39 @@ model LicenseChargeTransaction {
|
||||
@@map("license_charged_transactions")
|
||||
}
|
||||
|
||||
model LicenseRenew {
|
||||
id String @id @default(ulid())
|
||||
expires_at DateTime
|
||||
model License {
|
||||
id String @id @default(ulid())
|
||||
accounts_limit Int @default(2)
|
||||
|
||||
created_at DateTime @default(now()) @db.Timestamp(0)
|
||||
updated_at DateTime @updatedAt() @db.Timestamp(0)
|
||||
|
||||
charge_transaction_id String
|
||||
charge_transaction LicenseRenewChargeTransaction @relation(fields: [charge_transaction_id], references: [id])
|
||||
charge_transaction LicenseChargeTransaction @relation(fields: [charge_transaction_id], references: [id])
|
||||
|
||||
activation_id String
|
||||
activation LicenseActivation @relation(fields: [activation_id], references: [id])
|
||||
activation LicenseActivation?
|
||||
|
||||
@@map("license_renew")
|
||||
@@map("licenses")
|
||||
}
|
||||
|
||||
model LicenseActivation {
|
||||
id String @id @unique() @default(ulid())
|
||||
starts_at DateTime
|
||||
expires_at DateTime
|
||||
|
||||
created_at DateTime @default(now()) @db.Timestamp(0)
|
||||
updated_at DateTime @updatedAt() @db.Timestamp(0)
|
||||
|
||||
license_id String @unique
|
||||
license License @relation(fields: [license_id], references: [id])
|
||||
|
||||
business_activity_id String @unique
|
||||
business_activity BusinessActivity @relation(fields: [business_activity_id], references: [id])
|
||||
|
||||
license_renews LicenseRenew[]
|
||||
account_allocations LicenseAccountAllocation[]
|
||||
|
||||
@@map("licenses_activated")
|
||||
}
|
||||
|
||||
model LicenseRenewChargeTransaction {
|
||||
@@ -82,6 +67,22 @@ model LicenseRenewChargeTransaction {
|
||||
@@map("license_renew_charge_transaction")
|
||||
}
|
||||
|
||||
model LicenseRenew {
|
||||
id String @id @default(ulid())
|
||||
expires_at DateTime
|
||||
|
||||
created_at DateTime @default(now()) @db.Timestamp(0)
|
||||
updated_at DateTime @updatedAt() @db.Timestamp(0)
|
||||
|
||||
charge_transaction_id String
|
||||
charge_transaction LicenseRenewChargeTransaction @relation(fields: [charge_transaction_id], references: [id])
|
||||
|
||||
activation_id String
|
||||
activation LicenseActivation @relation(fields: [activation_id], references: [id])
|
||||
|
||||
@@map("license_renew")
|
||||
}
|
||||
|
||||
model PartnerAccountQuotaChargeTransaction {
|
||||
id String @id @default(ulid())
|
||||
activation_expires_at DateTime
|
||||
@@ -94,22 +95,39 @@ model PartnerAccountQuotaChargeTransaction {
|
||||
partner_id String
|
||||
partner Partner @relation(fields: [partner_id], references: [id])
|
||||
|
||||
allocations PartnerAccountQuotaAllocation[]
|
||||
credits PartnerAccountQuotaCredit[]
|
||||
|
||||
@@map("partner_account_quota_charge_transaction")
|
||||
}
|
||||
|
||||
model PartnerAccountQuotaAllocation {
|
||||
model PartnerAccountQuotaCredit {
|
||||
id String @id @default(ulid())
|
||||
|
||||
created_at DateTime @default(now()) @db.Timestamp(0)
|
||||
updated_at DateTime @updatedAt() @db.Timestamp(0)
|
||||
|
||||
charge_transaction_id String
|
||||
charge_transaction PartnerAccountQuotaChargeTransaction @relation(fields: [charge_transaction_id], references: [id])
|
||||
charge_transaction_id String?
|
||||
charge_transaction PartnerAccountQuotaChargeTransaction? @relation(fields: [charge_transaction_id], references: [id])
|
||||
|
||||
license_id String?
|
||||
license License? @relation(fields: [license_id], references: [id])
|
||||
allocation_id String? @unique
|
||||
allocation LicenseAccountAllocation? @relation(fields: [allocation_id], references: [id])
|
||||
|
||||
@@map("partner_account_quota_allocation")
|
||||
@@map("partner_account_quota_credit")
|
||||
}
|
||||
|
||||
model LicenseAccountAllocation {
|
||||
id String @id @default(ulid())
|
||||
|
||||
created_at DateTime @default(now()) @db.Timestamp(0)
|
||||
updated_at DateTime @updatedAt() @db.Timestamp(0)
|
||||
|
||||
license_activation_id String?
|
||||
license_activation LicenseActivation? @relation(fields: [license_activation_id], references: [id])
|
||||
|
||||
account_id String? @unique
|
||||
account ConsumerAccount? @relation(fields: [account_id], references: [id])
|
||||
|
||||
partner_account_quota_credit PartnerAccountQuotaCredit?
|
||||
|
||||
@@map("license_account_allocation")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user