Add partnership request API with media uploads and admin listing.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Alireza Hassani
2026-09-27 21:51:44 +03:30
co-authored by Cursor
parent b661877d77
commit 70c889ab4b
12 changed files with 403 additions and 4 deletions
+38 -4
View File
@@ -45,6 +45,13 @@ enum SmsOtpPurpose {
storeRegister
}
enum PartnershipRequestStatus {
pending
reviewed
accepted
rejected
}
model User {
id String @id @default(cuid())
firstName String
@@ -61,10 +68,11 @@ model User {
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
refreshTokens RefreshToken[]
addresses UserAddress[]
ownedStore Store?
orders Order[] @relation("CustomerOrders")
refreshTokens RefreshToken[]
addresses UserAddress[]
ownedStore Store?
orders Order[] @relation("CustomerOrders")
partnershipRequests PartnershipRequest[]
@@index([role])
@@index([disabled])
@@ -324,6 +332,32 @@ model OrderStoreFulfillment {
@@index([status])
}
/// Producer / seller partnership applications from the storefront.
model PartnershipRequest {
id String @id @default(cuid())
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
businessNameFa String
businessNameEn String @default("")
categoryIds Int[]
description String
imageUrls String[]
cellNumber String
landline String?
instagram String?
city String
province String
address String
postalCode String
status PartnershipRequestStatus @default(pending)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@index([userId])
@@index([status])
@@index([createdAt])
}
/// Homepage / storefront image slots (hero slides, banners, category thumbs, …)
model WebsiteSlotItem {
id String @id @default(cuid())