fixup! feat(DB): Added utils file for better initializing db

This commit is contained in:
Black_Raven committed 2025-11-29 16:02:30 +03:00
1 parent 332f952394
commit 04789e7e8f
1 file changed
+67 -9
+67 -9
View File
@@ -1,14 +1,15 @@
import re import re
import sqlite3
from loguru import logger as log from loguru import logger as log
def add_category(conn, name, description=None, parent_id=None): def add_category(conn, name, description=None, parent_id=None, image_path=None, page_number=1):
cursor = conn.cursor() cursor = conn.cursor()
try: try:
cursor.execute(''' cursor.execute('''
INSERT OR IGNORE INTO categories (name, description, parent_id) INSERT OR IGNORE INTO categories (name, description, parent_id, image_path, page_number)
VALUES (?, ?, ?) VALUES (?, ?, ?, ?, ?)
''', (name, description, parent_id)) ''', (name, description, parent_id, image_path, page_number))
cursor.execute('SELECT id FROM categories WHERE name = ?', (name,)) cursor.execute('SELECT id FROM categories WHERE name = ?', (name,))
result = cursor.fetchone() result = cursor.fetchone()
@@ -58,8 +59,8 @@ def parse_product_data(product_text):
'stiffness_class': stiffness_class 'stiffness_class': stiffness_class
} }
def add_product(conn, product_text, category_id): def add_product(conn, product_text, category_id, image_path=None, page_number=1):
"""Добавление товара с парсингом параметров""" """Добавление товара с парсингом параметров, изображением и номером страницы"""
cursor = conn.cursor() cursor = conn.cursor()
product_data = parse_product_data(product_text) product_data = parse_product_data(product_text)
@@ -69,8 +70,8 @@ def add_product(conn, product_text, category_id):
INSERT INTO products ( INSERT INTO products (
name, full_name, description, category_id, name, full_name, description, category_id,
diameter, wall_thickness, length, color, diameter, wall_thickness, length, color,
application_type, stiffness_class application_type, stiffness_class, image_path, page_number
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
''', ( ''', (
product_data['short_name'], product_data['short_name'],
product_data['full_name'], product_data['full_name'],
@@ -81,7 +82,9 @@ def add_product(conn, product_text, category_id):
product_data['length'], product_data['length'],
product_data['color'], product_data['color'],
product_data['application_type'], product_data['application_type'],
product_data['stiffness_class'] product_data['stiffness_class'],
image_path,
page_number
)) ))
product_id = cursor.lastrowid product_id = cursor.lastrowid
@@ -111,3 +114,58 @@ def add_product(conn, product_text, category_id):
except sqlite3.Error as e: except sqlite3.Error as e:
log.error(f"Ошибка при добавлении товара: {e}") log.error(f"Ошибка при добавлении товара: {e}")
return None return None
def get_categories_by_page(conn, page_number=1, items_per_page=9):
"""Получить категории для определенной страницы"""
cursor = conn.cursor()
offset = (page_number - 1) * items_per_page
cursor.execute('''
SELECT * FROM categories
WHERE page_number = ?
ORDER BY id
LIMIT ? OFFSET ?
''', (page_number, items_per_page, offset))
return cursor.fetchall()
def get_products_by_page(conn, page_number=1, items_per_page=9, category_id=None):
"""Получить товары для определенной страницы"""
cursor = conn.cursor()
offset = (page_number - 1) * items_per_page
if category_id:
cursor.execute('''
SELECT * FROM products
WHERE page_number = ? AND category_id = ?
ORDER BY id
LIMIT ? OFFSET ?
''', (page_number, category_id, items_per_page, offset))
else:
cursor.execute('''
SELECT * FROM products
WHERE page_number = ?
ORDER BY id
LIMIT ? OFFSET ?
''', (page_number, items_per_page, offset))
return cursor.fetchall()
def get_total_categories_pages(conn, items_per_page=9):
"""Получить общее количество страниц категорий"""
cursor = conn.cursor()
cursor.execute('SELECT COUNT(*) FROM categories')
total_categories = cursor.fetchone()[0]
return (total_categories + items_per_page - 1) // items_per_page
def get_total_products_pages(conn, items_per_page=9, category_id=None):
"""Получить общее количество страниц товаров"""
cursor = conn.cursor()
if category_id:
cursor.execute('SELECT COUNT(*) FROM products WHERE category_id = ?', (category_id,))
else:
cursor.execute('SELECT COUNT(*) FROM products')
total_products = cursor.fetchone()[0]
return (total_products + items_per_page - 1) // items_per_page