fix(db): Added db to actual price

This commit is contained in:
Black_Raven committed 2026-03-30 20:36:24 +03:00
1 parent 39cc73d71a
commit beb94d2b0d
4 files changed
+364 -134

No files matched your search

+62 -9
View File
@@ -12,7 +12,7 @@ def get_all_categories_with_attributes(db_name: str = 'pipe_store.db') -> List[D
cursor.execute("""
SELECT id, name, image_path
FROM categories
WHERE parent_id IS NULL OR parent_id = 1
WHERE parent_id IS NULL
ORDER BY id
""")
@@ -21,7 +21,7 @@ def get_all_categories_with_attributes(db_name: str = 'pipe_store.db') -> List[D
for cat_row in cursor.fetchall():
category_id = cat_row['id']
# Получаем все фильтры для товаров в этой категории
# Получаем все фильтры для товаров в этой категории и подкатегориях
cursor.execute("""
SELECT DISTINCT f.id, f.name, f.filter_key
FROM filters f
@@ -29,10 +29,13 @@ def get_all_categories_with_attributes(db_name: str = 'pipe_store.db') -> List[D
SELECT DISTINCT pf.filter_key
FROM product_filters pf
JOIN products p ON pf.product_id = p.id
WHERE p.category_id = ?
WHERE p.category_id IN (
SELECT id FROM categories
WHERE id = ? OR parent_id = ?
)
)
ORDER BY f.id
""", (category_id,))
""", (category_id, category_id))
attributes = []
@@ -46,21 +49,24 @@ def get_all_categories_with_attributes(db_name: str = 'pipe_store.db') -> List[D
SELECT DISTINCT pf.value, COUNT(*) as count
FROM product_filters pf
JOIN products p ON pf.product_id = p.id
WHERE p.category_id = ? AND pf.filter_key = ?
WHERE p.category_id IN (
SELECT id FROM categories
WHERE id = ? OR parent_id = ?
)
AND pf.filter_key = ?
GROUP BY pf.value
ORDER BY pf.value
""", (category_id, filter_key))
""", (category_id, category_id, filter_key))
vals = []
for val_row in cursor.fetchall():
# Генерируем уникальный ID для значения
val_id = hash(f"{category_id}_{filter_key}_{val_row['value']}") % 1000000
vals.append({
"id": val_id,
"val": val_row['value']
})
if vals: # Добавляем только если есть значения
if vals:
attributes.append({
"id": filter_id,
"name": filter_name,
@@ -97,12 +103,28 @@ def get_category_by_id(category_id: int, db_name: str = 'pipe_store.db') -> Opti
row = cursor.fetchone()
if row:
# Получаем подкатегории
cursor.execute("""
SELECT id, name, image_path
FROM categories
WHERE parent_id = ?
""", (category_id,))
subcategories = []
for sub_row in cursor.fetchall():
subcategories.append({
"id": sub_row['id'],
"name": sub_row['name'],
"image": sub_row['image_path']
})
return {
"id": row['id'],
"name": row['name'],
"description": row['description'],
"image": row['image_path'],
"parent_id": row['parent_id']
"parent_id": row['parent_id'],
"subcategories": subcategories
}
return None
@@ -111,3 +133,34 @@ def get_category_by_id(category_id: int, db_name: str = 'pipe_store.db') -> Opti
return None
finally:
conn.close()
def get_subcategories(parent_id: int, db_name: str = 'pipe_store.db') -> List[Dict[str, Any]]:
"""Получить подкатегории для родительской категории"""
conn = sqlite3.connect(db_name)
conn.row_factory = sqlite3.Row
cursor = conn.cursor()
try:
cursor.execute("""
SELECT id, name, description, image_path
FROM categories
WHERE parent_id = ?
ORDER BY id
""", (parent_id,))
subcategories = []
for row in cursor.fetchall():
subcategories.append({
"id": row['id'],
"name": row['name'],
"description": row['description'],
"image": row['image_path']
})
return subcategories
except sqlite3.Error as e:
log.error(f"Ошибка при получении подкатегорий для {parent_id}: {e}")
return []
finally:
conn.close()