Add partnership request API with media uploads and admin listing.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
co-authored by
Cursor
parent
b661877d77
commit
70c889ab4b
@@ -0,0 +1,37 @@
|
||||
-- CreateEnum
|
||||
CREATE TYPE "PartnershipRequestStatus" AS ENUM ('pending', 'reviewed', 'accepted', 'rejected');
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "PartnershipRequest" (
|
||||
"id" TEXT NOT NULL,
|
||||
"userId" TEXT NOT NULL,
|
||||
"businessNameFa" TEXT NOT NULL,
|
||||
"businessNameEn" TEXT NOT NULL DEFAULT '',
|
||||
"categoryIds" INTEGER[],
|
||||
"description" TEXT NOT NULL,
|
||||
"imageUrls" TEXT[],
|
||||
"cellNumber" TEXT NOT NULL,
|
||||
"landline" TEXT,
|
||||
"instagram" TEXT,
|
||||
"city" TEXT NOT NULL,
|
||||
"province" TEXT NOT NULL,
|
||||
"address" TEXT NOT NULL,
|
||||
"postalCode" TEXT NOT NULL,
|
||||
"status" "PartnershipRequestStatus" NOT NULL DEFAULT 'pending',
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "PartnershipRequest_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "PartnershipRequest_userId_idx" ON "PartnershipRequest"("userId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "PartnershipRequest_status_idx" ON "PartnershipRequest"("status");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "PartnershipRequest_createdAt_idx" ON "PartnershipRequest"("createdAt");
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "PartnershipRequest" ADD CONSTRAINT "PartnershipRequest_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
+38
-4
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user