From fbbda2fe58165e97e4dfbc0f60989423d991e258 Mon Sep 17 00:00:00 2001 From: shafi54 <108669266+shafi-aviz@users.noreply.github.com> Date: Wed, 19 Aug 2026 20:55:04 +0530 Subject: [PATCH] enh --- apps/backend/src/stores/product-store.ts | 2 + .../src/trpc/apis/common-apis/common.ts | 1 + .../app/(drawer)/(tabs)/order-again/index.tsx | 10 +- apps/user-ui/app/(drawer)/_layout.tsx | 12 +-- apps/user-ui/components/cart-page.tsx | 43 +++++++-- .../src/stores/store-helpers.ts | 2 + scripts/clear-db-old.sql | 95 +++++++++++++++++++ 7 files changed, 144 insertions(+), 21 deletions(-) create mode 100644 scripts/clear-db-old.sql diff --git a/apps/backend/src/stores/product-store.ts b/apps/backend/src/stores/product-store.ts index 8c55021..f3b41e6 100644 --- a/apps/backend/src/stores/product-store.ts +++ b/apps/backend/src/stores/product-store.ts @@ -38,6 +38,7 @@ interface Product { productTags: string[] productType: string isComboOnly: boolean + isOffer: boolean comboItems: Array<{ skuId: number skuName: string | null @@ -287,6 +288,7 @@ export async function getAllProducts(): Promise { productTags: productTags, productType: product.productType || 'item', isComboOnly: product.isComboOnly, + isOffer: product.isOffer, comboItems: comboItems, }) } diff --git a/apps/backend/src/trpc/apis/common-apis/common.ts b/apps/backend/src/trpc/apis/common-apis/common.ts index 8352def..fb3bade 100644 --- a/apps/backend/src/trpc/apis/common-apis/common.ts +++ b/apps/backend/src/trpc/apis/common-apis/common.ts @@ -58,6 +58,7 @@ export async function scaffoldProducts() { images: product.images, productType: product.productType || 'item', isComboOnly: product.isComboOnly, + isOffer: product.isOffer, }; }) ); diff --git a/apps/user-ui/app/(drawer)/(tabs)/order-again/index.tsx b/apps/user-ui/app/(drawer)/(tabs)/order-again/index.tsx index 4cae8fd..800abe5 100644 --- a/apps/user-ui/app/(drawer)/(tabs)/order-again/index.tsx +++ b/apps/user-ui/app/(drawer)/(tabs)/order-again/index.tsx @@ -11,7 +11,7 @@ import { } from "common-ui"; import MaterialIcons from "@expo/vector-icons/MaterialIcons"; import ProductCard from "@/components/ProductCard"; -import { trpc } from "@/src/trpc-client"; +import { useAllProducts } from "@/src/hooks/prominent-api-hooks"; import FloatingCartBar from "@/components/floating-cart-bar"; import TabLayoutWrapper from "@/components/TabLayoutWrapper"; @@ -97,11 +97,11 @@ export default function Offers() { const [expandedOffers, setExpandedOffers] = useState(false); const [expandedCombos, setExpandedCombos] = useState(false); - const { data, isLoading, error, refetch } = - trpc.user.product.getOffersPage.useQuery(); + const { data, isLoading, error, refetch } = useAllProducts(); - const combos = data?.combos || []; - const offers = data?.offers || []; + const allProducts = data?.products || []; + const combos = allProducts.filter((p) => p.productType === 'combo'); + const offers = allProducts.filter((p) => p.isOffer); useManualRefresh(() => { refetch(); diff --git a/apps/user-ui/app/(drawer)/_layout.tsx b/apps/user-ui/app/(drawer)/_layout.tsx index 240176b..dc62409 100755 --- a/apps/user-ui/app/(drawer)/_layout.tsx +++ b/apps/user-ui/app/(drawer)/_layout.tsx @@ -60,11 +60,11 @@ export default function Layout() { }} /> ( - + ), }} /> @@ -95,11 +95,11 @@ export default function Layout() { }} /> ( - + ), }} /> diff --git a/apps/user-ui/components/cart-page.tsx b/apps/user-ui/components/cart-page.tsx index 213785e..a69cc1f 100644 --- a/apps/user-ui/components/cart-page.tsx +++ b/apps/user-ui/components/cart-page.tsx @@ -460,17 +460,40 @@ export default function CartPage({ isFlashDelivery = false }: CartPageProps) { - - - + router.push( + isFlashDelivery + ? `/(drawer)/(tabs)/flash-delivery/product-detail/${item.skuId}` as any + : `/(drawer)/(tabs)/home/product-detail/${item.skuId}` as any + ) + } + activeOpacity={0.7} > - {product?.name} - + + + + + router.push( + isFlashDelivery + ? `/(drawer)/(tabs)/flash-delivery/product-detail/${item.skuId}` as any + : `/(drawer)/(tabs)/home/product-detail/${item.skuId}` as any + ) + } + activeOpacity={0.7} + style={tw`flex-1 mr-3`} + > + + {product?.name} + + {product?.productType !== 'combo' ? (product?.unitNotation || '') : ''} diff --git a/packages/db_helper_sqlite/src/stores/store-helpers.ts b/packages/db_helper_sqlite/src/stores/store-helpers.ts index 618b225..a8f6c3f 100644 --- a/packages/db_helper_sqlite/src/stores/store-helpers.ts +++ b/packages/db_helper_sqlite/src/stores/store-helpers.ts @@ -61,6 +61,7 @@ export interface ProductBasicData { flashPrice: string | null productType: string isComboOnly: boolean + isOffer: boolean } export interface AvailabilityCacheData { @@ -150,6 +151,7 @@ export async function getAllProductsForCache(): Promise { flashPrice: marketStats?.flashPrice ? String(marketStats.flashPrice) : null, productType: sku.product?.productType ?? 'item', isComboOnly: sku.isComboOnly ?? false, + isOffer: sku.isOffer ?? false, } }) } diff --git a/scripts/clear-db-old.sql b/scripts/clear-db-old.sql new file mode 100644 index 0000000..62c75c2 --- /dev/null +++ b/scripts/clear-db-old.sql @@ -0,0 +1,95 @@ +-- ============================================================ +-- clear-db-old.sql — DROP ALL TABLES of the PRE-SKU-SPLIT database +-- +-- This targets a database migrated only up to: +-- 0000_nifty_sauron.sql +-- 0001_migrate_product_slots.sql +-- (i.e. 0002_sku_split.sql has NOT been applied) +-- +-- In this state there are NO product_skus / sku_features / +-- product_market_stats / product_combos tables, and product_slots +-- has already been dropped by 0001 (hence its IF EXISTS below). +-- +-- Usage: +-- sqlite3 < scripts/clear-db-old.sql +-- wrangler d1 execute --local --file scripts/clear-db-old.sql +-- wrangler d1 execute --remote --file scripts/clear-db-old.sql +-- +-- WARNING: This DROPS every table in the database. There is no undo. +-- ============================================================ + +-- Don't enforce FK constraints while dropping (ordering below is +-- child-first anyway, so this is belt-and-braces). +PRAGMA defer_foreign_keys = on; +PRAGMA foreign_keys = OFF; + +-- ---- leaf tables (no inbound references) ---- +DROP TABLE IF EXISTS order_items; +DROP TABLE IF EXISTS cart_items; +DROP TABLE IF EXISTS special_deals; +DROP TABLE IF EXISTS coupon_applicable_products; +DROP TABLE IF EXISTS product_reviews; +DROP TABLE IF EXISTS product_tags; +DROP TABLE IF EXISTS product_group_membership; + +-- ---- product hierarchy (old flat product_info) ---- +DROP TABLE IF EXISTS product_slots; +DROP TABLE IF EXISTS product_info; +DROP TABLE IF EXISTS store_info; + +-- ---- orders & dependents ---- +DROP TABLE IF EXISTS coupon_usage; +DROP TABLE IF EXISTS order_status; +DROP TABLE IF EXISTS payments; +DROP TABLE IF EXISTS refunds; +DROP TABLE IF EXISTS complaints; +DROP TABLE IF EXISTS user_incidents; +DROP TABLE IF EXISTS orders; +DROP TABLE IF EXISTS payment_info; +DROP TABLE IF EXISTS coupon_applicable_users; + +-- ---- coupons & snippets ---- +DROP TABLE IF EXISTS coupons; +DROP TABLE IF EXISTS reserved_coupons; +DROP TABLE IF EXISTS vendor_snippets; +DROP TABLE IF EXISTS delivery_slot_info; + +-- ---- content/catalog ---- +DROP TABLE IF EXISTS home_banners; +DROP TABLE IF EXISTS product_group_info; +DROP TABLE IF EXISTS product_tag_info; +DROP TABLE IF EXISTS product_categories; +DROP TABLE IF EXISTS units; +DROP TABLE IF EXISTS upload_url_status; + +-- ---- notifications / misc ---- +DROP TABLE IF EXISTS user_notifications; +DROP TABLE IF EXISTS notifications; +DROP TABLE IF EXISTS notif_creds; +DROP TABLE IF EXISTS key_val_store; + +-- ---- addresses ---- +DROP TABLE IF EXISTS addresses; +DROP TABLE IF EXISTS address_areas; +DROP TABLE IF EXISTS address_zones; + +-- ---- users ---- +DROP TABLE IF EXISTS unlogged_user_tokens; +DROP TABLE IF EXISTS user_creds; +DROP TABLE IF EXISTS user_details; +DROP TABLE IF EXISTS users; + +-- ---- staff ---- +DROP TABLE IF EXISTS staff_role_permissions; +DROP TABLE IF EXISTS staff_users; +DROP TABLE IF EXISTS staff_roles; +DROP TABLE IF EXISTS staff_permissions; + +-- (sqlite_sequence is internal; SQLite drops it automatically once the last +-- AUTOINCREMENT table is gone) + +PRAGMA foreign_keys = ON; +PRAGMA defer_foreign_keys = off; + +-- Optionally reclaim disk space (sqlite3 CLI only; not supported in D1): +-- VACUUM;