diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 2cf622e..d7ea50e 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -45,6 +45,7 @@ model Church { kerknetId String? @unique @map("kerknet_id") gottesdienstzeitenId String? @unique @map("gottesdienstzeiten_id") discovermassId String? @unique @map("discovermass_id") + buscarmisasNetworkId String? @unique @map("buscarmisas_network_id") claimed Boolean @default(false) claimedAt DateTime? @map("claimed_at") lastScrapedAt DateTime? @map("last_scraped_at") @@ -70,6 +71,7 @@ model Church { scraperConfig ChurchScraperConfig? dioceseObj Diocese? @relation(fields: [dioceseId], references: [id]) claimedByUser User? @relation(fields: [claimedByUserId], references: [id]) + claimRequests ClaimRequest[] @@index([osmId]) @@index([baiduId]) @@ -96,6 +98,7 @@ model Church { @@index([kerknetId]) @@index([gottesdienstzeitenId]) @@index([discovermassId]) + @@index([buscarmisasNetworkId]) @@index([dioceseId]) @@index([claimedByUserId]) @@map("churches") @@ -231,6 +234,8 @@ model User { confessionSchedules ConfessionSchedule[] @relation("ConfessionScheduleCreator") adorationSchedules AdorationSchedule[] @relation("AdorationScheduleCreator") specialServices SpecialService[] @relation("SpecialServiceCreator") + claimRequestsSent ClaimRequest[] @relation("ClaimRequester") + claimRequestsReceived ClaimRequest[] @relation("ClaimRespondent") @@map("users") } @@ -381,3 +386,27 @@ model SpecialService { @@index([churchId, serviceType]) @@map("special_services") } + +model ClaimRequest { + id String @id @default(uuid()) + churchId String @map("church_id") + requesterUserId String @map("requester_user_id") + claimantUserId String @map("claimant_user_id") + message String + status String @default("pending") // pending, accepted, denied, ignored, auto_transferred + denyReason String? @map("deny_reason") + expiresAt DateTime @map("expires_at") + respondedAt DateTime? @map("responded_at") + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + + church Church @relation(fields: [churchId], references: [id], onDelete: Cascade) + requester User @relation("ClaimRequester", fields: [requesterUserId], references: [id], onDelete: Cascade) + claimant User @relation("ClaimRespondent", fields: [claimantUserId], references: [id], onDelete: Cascade) + + @@index([claimantUserId, status]) + @@index([requesterUserId]) + @@index([churchId]) + @@index([expiresAt, status]) + @@map("claim_requests") +}