hisham-cmd commited on
Commit
d1f045a
·
verified ·
1 Parent(s): 9c2ed25

Update backend with high-quality catalog and fixes

Browse files
Files changed (2) hide show
  1. app/api/seed.py +34 -1
  2. seed_products.py +51 -9
app/api/seed.py CHANGED
@@ -17,6 +17,39 @@ from app.services.external_catalog import ExternalCatalogService
17
 
18
  router = APIRouter(prefix="/seed", tags=["Seed Data"])
19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  # Syncing with High-Quality Catalog Categories
21
  CATEGORY_MAP = {
22
  "الأجهزة الإلكترونية": ["الهواتف والإلكترونيات", "الهواتف الذكية", "أجهزة الكمبيوتر"],
@@ -144,7 +177,7 @@ async def seed_database(clear: bool = False, db: Session = Depends(get_db)):
144
  description_ar=item.get("description_ar", ""),
145
  description_en=item.get("description_en", ""),
146
  price=float(item.get("price", 0)),
147
- compare_price=round(float(item.get("compare_price", price * 1.2)), 2),
148
  stock=item.get("stock", random.randint(10, 100)),
149
  category_id=sub_cat_info["model"].id,
150
  rating=item.get("rating", 4.5),
 
17
 
18
  router = APIRouter(prefix="/seed", tags=["Seed Data"])
19
 
20
+ # Category Icons Mapping
21
+ PARENT_ICONS = {
22
+ "الأجهزة الإلكترونية": "📱",
23
+ "ملحقات السيارات": "🚗",
24
+ "المنزل والمطبخ": "🏠",
25
+ "العطور والتجميل": "✨",
26
+ "الساعات والإكسسوارات": "⌚",
27
+ "الرياضة واللياقة": "🎯",
28
+ }
29
+
30
+ SUB_ICONS = {
31
+ "الهواتف والإلكترونيات": "📱",
32
+ "الهواتف الذكية": "📲",
33
+ "أجهزة الكمبيوتر": "💻",
34
+ "ملحقات السيارات": "🔧",
35
+ "إكسسوارات السيارات": "🔌",
36
+ "المنزل والمطبخ": "🍳",
37
+ "المستلزمات المنزلية": "🧹",
38
+ "مستلزمات المطبخ": "🍴",
39
+ "ديكور المنزل": "🖼️",
40
+ "الأثاث": "🛋️",
41
+ "العطور": "🧴",
42
+ "التجميل والعناية": "💄",
43
+ "الجمال": "💅",
44
+ "العناية بالبشرة": "🧴",
45
+ "الساعات والاكسسوارات": "⌚",
46
+ "ساعات نسائية": "💍",
47
+ "ساعات رجالية": "👔",
48
+ "نظارات شمسية": "🕶️",
49
+ "الرياضة واللياقة": "🏋️",
50
+ "إكسسوارات رياضية": "🎒",
51
+ }
52
+
53
  # Syncing with High-Quality Catalog Categories
54
  CATEGORY_MAP = {
55
  "الأجهزة الإلكترونية": ["الهواتف والإلكترونيات", "الهواتف الذكية", "أجهزة الكمبيوتر"],
 
177
  description_ar=item.get("description_ar", ""),
178
  description_en=item.get("description_en", ""),
179
  price=float(item.get("price", 0)),
180
+ compare_price=round(float(item.get("compare_price", float(item.get("price", 0)) * 1.3)), 2),
181
  stock=item.get("stock", random.randint(10, 100)),
182
  category_id=sub_cat_info["model"].id,
183
  rating=item.get("rating", 4.5),
seed_products.py CHANGED
@@ -10,14 +10,47 @@ from app.models.product import Product, Category, ProductImage
10
  # Ensure tables are created
11
  Base.metadata.create_all(bind=engine)
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  # Mapping distinct categories from Generator to DB structure
14
  CATEGORY_MAP = {
15
- "الأجهزة الإلكترونية": ["الهواتف والإلكترونيات"],
16
- "ملحقات السيارات": ["ملحقات السيارات"],
17
- "المنزل والمطبخ": ["المستلزمات المنزلية"],
18
- "العطور والتجميل": ["التجميل والعناية"],
19
- "الساعات والإكسسوارات": ["الساعات والإكسسوارات"],
20
- "الرياضة واللياقة": ["الرياضة واللياقة"],
21
  }
22
 
23
  def seed_database(clear=False):
@@ -47,7 +80,11 @@ def seed_database(clear=False):
47
  for parent_name, sub_names in CATEGORY_MAP.items():
48
  parent_cat = db.query(Category).filter(Category.name_ar == parent_name).first()
49
  if not parent_cat:
50
- parent_cat = Category(name_ar=parent_name, name_en=parent_name, icon="package")
 
 
 
 
51
  db.add(parent_cat)
52
  db.commit()
53
  db.refresh(parent_cat)
@@ -55,11 +92,16 @@ def seed_database(clear=False):
55
  for sub_name in sub_names:
56
  sub_cat = db.query(Category).filter(Category.name_ar == sub_name).first()
57
  if not sub_cat:
58
- sub_cat = Category(name_ar=sub_name, name_en=sub_name, parent_id=parent_cat.id, icon="list")
 
 
 
 
 
59
  db.add(sub_cat)
60
  db.commit()
61
  db.refresh(sub_cat)
62
- cat_cache[parent_name] = sub_cat.id
63
 
64
  # Cache existing products for duplicate check
65
  existing_names = set(n[0] for n in db.execute(text("SELECT name_en FROM products")).fetchall())
 
10
  # Ensure tables are created
11
  Base.metadata.create_all(bind=engine)
12
 
13
+ # Category Icons Mapping
14
+ PARENT_ICONS = {
15
+ "الأجهزة الإلكترونية": "📱",
16
+ "ملحقات السيارات": "🚗",
17
+ "المنزل والمطبخ": "🏠",
18
+ "العطور والتجميل": "✨",
19
+ "الساعات والإكسسوارات": "⌚",
20
+ "الرياضة واللياقة": "🎯",
21
+ }
22
+
23
+ SUB_ICONS = {
24
+ "الهواتف والإلكترونيات": "📱",
25
+ "الهواتف الذكية": "📲",
26
+ "أجهزة الكمبيوتر": "💻",
27
+ "ملحقات السيارات": "🔧",
28
+ "إكسسوارات السيارات": "🔌",
29
+ "المنزل والمطبخ": "🍳",
30
+ "المستلزمات المنزلية": "🧹",
31
+ "مستلزمات المطبخ": "🍴",
32
+ "ديكور المنزل": "🖼️",
33
+ "الأثاث": "🛋️",
34
+ "العطور": "🧴",
35
+ "التجميل والعناية": "💄",
36
+ "الجمال": "💅",
37
+ "العناية بالبشرة": "🧴",
38
+ "الساعات والاكسسوارات": "⌚",
39
+ "ساعات نسائية": "💍",
40
+ "ساعات رجالية": "👔",
41
+ "نظارات شمسية": "🕶️",
42
+ "الرياضة واللياقة": "🏋️",
43
+ "إكسسوارات رياضية": "🎒",
44
+ }
45
+
46
  # Mapping distinct categories from Generator to DB structure
47
  CATEGORY_MAP = {
48
+ "الأجهزة الإلكترونية": ["الهواتف والإلكترونيات", "الهواتف الذكية", "أجهزة الكمبيوتر"],
49
+ "ملحقات السيارات": ["ملحقات السيارات", "إكسسوارات السيارات"],
50
+ "المنزل والمطبخ": ["المنزل والمطبخ", "المستلزمات المنزلية", "مستلزمات المطبخ", "ديكور المنزل", "الأثاث"],
51
+ "العطور والتجميل": ["العطور", "التجميل والعناية", "الجمال", "العناية بالبشرة"],
52
+ "الساعات والإكسسوارات": ["الساعات والاكسسوارات", "ساعات نسائية", "ساعات رجالية", "نظارات شمسية"],
53
+ "الرياضة واللياقة": ["الرياضة واللياقة", "إكسسوارات رياضية"],
54
  }
55
 
56
  def seed_database(clear=False):
 
80
  for parent_name, sub_names in CATEGORY_MAP.items():
81
  parent_cat = db.query(Category).filter(Category.name_ar == parent_name).first()
82
  if not parent_cat:
83
+ parent_cat = Category(
84
+ name_ar=parent_name,
85
+ name_en=parent_name,
86
+ icon=PARENT_ICONS.get(parent_name, "📦")
87
+ )
88
  db.add(parent_cat)
89
  db.commit()
90
  db.refresh(parent_cat)
 
92
  for sub_name in sub_names:
93
  sub_cat = db.query(Category).filter(Category.name_ar == sub_name).first()
94
  if not sub_cat:
95
+ sub_cat = Category(
96
+ name_ar=sub_name,
97
+ name_en=sub_name,
98
+ parent_id=parent_cat.id,
99
+ icon=SUB_ICONS.get(sub_name, "📦")
100
+ )
101
  db.add(sub_cat)
102
  db.commit()
103
  db.refresh(sub_cat)
104
+ cat_cache[sub_name] = sub_cat.id
105
 
106
  # Cache existing products for duplicate check
107
  existing_names = set(n[0] for n in db.execute(text("SELECT name_en FROM products")).fetchall())