- Introduced recurring booking groups with the ability to create and cancel them. - Added database migrations for recurring bookings, including new tables and relationships. - Implemented handlers for creating and canceling recurring bookings in the admin booking module. - Enhanced existing booking services to support recurring bookings logic. - Updated API contract to include new schemas for recurring bookings. - Refactored existing code for improved readability and maintainability.
58 lines
2.1 KiB
Plaintext
58 lines
2.1 KiB
Plaintext
model Complex {
|
|
id String @id @db.Uuid
|
|
complexName String @map("complex_name")
|
|
physicalAddress String? @map("physical_address") @db.VarChar(200)
|
|
city String? @map("city") @db.VarChar(100)
|
|
state String? @map("state") @db.VarChar(100)
|
|
country String? @map("country") @db.VarChar(100)
|
|
complexSlug String @unique @map("complex_slug")
|
|
adminEmail String @map("admin_email")
|
|
planCode String? @map("plan_code") @db.VarChar(10)
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
updatedAt DateTime @updatedAt @map("updated_at")
|
|
plan Plan? @relation(fields: [planCode], references: [code])
|
|
users ComplexUser[]
|
|
invitations ComplexInvitation[]
|
|
courts Court[]
|
|
recurringGroups RecurringBookingGroup[]
|
|
|
|
@@index([planCode])
|
|
@@index([complexSlug])
|
|
@@map("complexes")
|
|
}
|
|
|
|
enum ComplexUserRole {
|
|
ADMIN
|
|
EMPLOYEE
|
|
}
|
|
|
|
model ComplexUser {
|
|
complexId String @map("complex_id") @db.Uuid
|
|
userId String @map("user_id")
|
|
role ComplexUserRole @default(ADMIN)
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
complex Complex @relation(fields: [complexId], references: [id], onDelete: Cascade)
|
|
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
|
|
@@id([complexId, userId])
|
|
@@index([userId])
|
|
@@map("complex_users")
|
|
}
|
|
|
|
model ComplexInvitation {
|
|
id String @id @db.Uuid
|
|
complexId String @map("complex_id") @db.Uuid
|
|
email String @db.VarChar(255)
|
|
tokenHash String @unique @map("token_hash")
|
|
expiresAt DateTime @map("expires_at")
|
|
acceptedAt DateTime? @map("accepted_at")
|
|
revokedAt DateTime? @map("revoked_at")
|
|
createdAt DateTime @default(now()) @map("created_at")
|
|
updatedAt DateTime @updatedAt @map("updated_at")
|
|
complex Complex @relation(fields: [complexId], references: [id], onDelete: Cascade)
|
|
|
|
@@index([complexId, email])
|
|
@@index([email])
|
|
@@map("complex_invitations")
|
|
}
|