Add website static image slots with page grouping and bilingual captions.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Alireza Hassani
2026-08-16 23:56:16 +03:30
co-authored by Cursor
parent b991a60cbc
commit 1c7678ce67
18 changed files with 1098 additions and 6 deletions
+45 -3
View File
@@ -108,6 +108,7 @@ model Business {
userProducts UserProduct[]
website_brand_groups website_brand_groups[]
website_category_groups website_category_groups[]
website_image_slots website_image_slots[]
website_sliders website_sliders[]
@@map("businesses")
@@ -289,9 +290,10 @@ model Media {
portfolios portfolios[]
videos videos[]
instructions instructions[]
featuredProducts Product[] @relation("ProductFeaturedMedia")
featuredUserProducts UserProduct[] @relation("UserProductFeaturedMedia")
website_slider_slides website_slider_slides[]
featuredProducts Product[] @relation("ProductFeaturedMedia")
featuredUserProducts UserProduct[] @relation("UserProductFeaturedMedia")
website_image_slot_items website_image_slot_items[]
website_slider_slides website_slider_slides[]
@@index([businessId], map: "idx_media_business_id")
@@index([businessId, mediaType], map: "idx_media_business_type")
@@ -1113,6 +1115,46 @@ model website_category_groups {
@@index([business_id], map: "idx_website_category_groups_business_id")
}
model website_image_slot_items {
id BigInt @id @default(autoincrement())
slot_id BigInt
image_media_id BigInt
title String? @db.VarChar(255)
title_fa String? @db.VarChar(255)
title_en String? @db.VarChar(255)
subtext String? @db.VarChar(500)
link_url String? @db.VarChar(2048)
sort_order Int @default(0)
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
media Media @relation(fields: [image_media_id], references: [id], onUpdate: NoAction)
website_image_slots website_image_slots @relation(fields: [slot_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
@@index([image_media_id], map: "idx_website_image_slot_items_image_media_id")
@@index([slot_id], map: "idx_website_image_slot_items_slot_id")
}
model website_image_slots {
id BigInt @id @default(autoincrement())
business_id BigInt
slot_key String @db.VarChar(100)
kind String @db.VarChar(20)
label String @db.VarChar(255)
aspect_ratio String? @db.VarChar(20)
recommended_width Int?
item_count Int?
page_key String @default("home") @db.VarChar(100)
sort_order Int @default(0)
created_at DateTime @default(now()) @db.Timestamptz(6)
updated_at DateTime @default(now()) @db.Timestamptz(6)
website_image_slot_items website_image_slot_items[]
businesses Business @relation(fields: [business_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
@@unique([business_id, slot_key], map: "website_image_slots_business_id_slot_key_unique")
@@index([business_id], map: "idx_website_image_slots_business_id")
@@index([business_id, page_key], map: "idx_website_image_slots_business_id_page_key")
}
model website_slider_slides {
id BigInt @id @default(autoincrement())
slider_id BigInt