Add shipping cost groups and reject spam contact-form SMS.
Wire cart/checkout shipping fees with category groups and static rates, reject gibberish contact submissions, and SMS only valid Iranian mobiles. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
co-authored by
Cursor
parent
1a49576752
commit
88ef4e82a1
@@ -161,6 +161,7 @@ model Business {
|
||||
storeItemVariants StoreItemVariant[]
|
||||
storeItems StoreItem[]
|
||||
storeLoanMethods StoreLoanMethod[]
|
||||
shippingCostGroups ShippingCostGroup[]
|
||||
storeSpecials StoreSpecial[]
|
||||
transactions Transaction[]
|
||||
userProductTechnicalFieldValues UserProductTechnicalFieldValue[]
|
||||
@@ -443,6 +444,7 @@ model Category {
|
||||
assignments CategoryAssignment[]
|
||||
technicalForm CategoryTechnicalForm?
|
||||
variations CategoryVariation[]
|
||||
shippingCostGroupCategories ShippingCostGroupCategory[]
|
||||
website_category_group_items website_category_group_items[]
|
||||
|
||||
@@unique([businessId, entityType, slug], map: "categories_business_entity_slug_unique")
|
||||
@@ -943,6 +945,7 @@ model City {
|
||||
updatedAt DateTime @default(now()) @updatedAt @map("updated_at") @db.Timestamptz(6)
|
||||
parent City? @relation("CityTree", fields: [parentId], references: [id], onDelete: Cascade, onUpdate: NoAction)
|
||||
children City[] @relation("CityTree")
|
||||
shippingCostCityRates ShippingCostGroupCityRate[]
|
||||
userProductsAsCity UserProduct[] @relation("UserProductCity")
|
||||
userProductsAsCountry UserProduct[] @relation("UserProductCountry")
|
||||
userProductsAsDistrict UserProduct[] @relation("UserProductDistrict")
|
||||
@@ -1254,6 +1257,55 @@ model StoreLoanMethod {
|
||||
@@map("store_loan_methods")
|
||||
}
|
||||
|
||||
model ShippingCostGroup {
|
||||
id BigInt @id @default(autoincrement())
|
||||
businessId BigInt @map("business_id")
|
||||
nameFa String @map("name") @db.VarChar(255)
|
||||
nameEn String @map("name_en") @db.VarChar(255)
|
||||
description String?
|
||||
methods String[] @default([])
|
||||
defaultAmount Decimal @default(0) @map("default_amount") @db.Decimal(12, 2)
|
||||
sortOrder Int @default(0) @map("sort_order")
|
||||
isActive Boolean @default(true) @map("is_active")
|
||||
isDefault Boolean @default(false) @map("is_default")
|
||||
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(6)
|
||||
updatedAt DateTime @default(now()) @updatedAt @map("updated_at") @db.Timestamptz(6)
|
||||
business Business @relation(fields: [businessId], references: [id], onDelete: Cascade, onUpdate: NoAction)
|
||||
cityRates ShippingCostGroupCityRate[]
|
||||
categories ShippingCostGroupCategory[]
|
||||
|
||||
@@index([businessId], map: "idx_shipping_cost_groups_business_id")
|
||||
@@index([businessId, sortOrder], map: "idx_shipping_cost_groups_business_sort_order")
|
||||
@@map("shipping_cost_groups")
|
||||
}
|
||||
|
||||
model ShippingCostGroupCityRate {
|
||||
id BigInt @id @default(autoincrement())
|
||||
shippingCostGroupId BigInt @map("shipping_cost_group_id")
|
||||
cityId BigInt @map("city_id")
|
||||
amount Decimal @db.Decimal(12, 2)
|
||||
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(6)
|
||||
updatedAt DateTime @default(now()) @updatedAt @map("updated_at") @db.Timestamptz(6)
|
||||
shippingCostGroup ShippingCostGroup @relation(fields: [shippingCostGroupId], references: [id], onDelete: Cascade, onUpdate: NoAction)
|
||||
city City @relation(fields: [cityId], references: [id], onDelete: Cascade, onUpdate: NoAction)
|
||||
|
||||
@@unique([shippingCostGroupId, cityId], map: "shipping_cost_group_city_rates_unique")
|
||||
@@index([shippingCostGroupId], map: "idx_shipping_cost_group_city_rates_group_id")
|
||||
@@index([cityId], map: "idx_shipping_cost_group_city_rates_city_id")
|
||||
@@map("shipping_cost_group_city_rates")
|
||||
}
|
||||
|
||||
model ShippingCostGroupCategory {
|
||||
shippingCostGroupId BigInt @map("shipping_cost_group_id")
|
||||
categoryId BigInt @map("category_id")
|
||||
shippingCostGroup ShippingCostGroup @relation(fields: [shippingCostGroupId], references: [id], onDelete: Cascade, onUpdate: NoAction)
|
||||
category Category @relation(fields: [categoryId], references: [id], onDelete: Cascade, onUpdate: NoAction)
|
||||
|
||||
@@id([shippingCostGroupId, categoryId])
|
||||
@@index([categoryId], map: "idx_shipping_cost_group_categories_category_id")
|
||||
@@map("shipping_cost_group_categories")
|
||||
}
|
||||
|
||||
model website_brand_group_items {
|
||||
id BigInt @id @default(autoincrement())
|
||||
group_id BigInt
|
||||
|
||||
Reference in New Issue
Block a user