import sqlite3 from loguru import logger as log from db.DBDataUtils import add_category, add_filter, add_product, parse_product_data from db.InitializeDB import init_database def init_tables(db_name='pipe_store.db'): init_database(db_name) conn = sqlite3.connect(db_name) cursor = conn.cursor() cursor.execute('SELECT COUNT(*) FROM categories') category_count = cursor.fetchone()[0] if category_count > 0: log.info("Категории уже были добавлены в базу данных, пропускаем инициализацию") conn.close() return log.info("Начинаем инициализацию базы категорий...") # Добавляем категории с распределением по страницам # Страница 1 main_category_id = add_category( conn, "Трубы ПВХ", "Трубы ПВХ для канализационных систем", image_path="/images/categories/pvc_pipes_main.jpg", page_number=1 ) # Страница 1 internal_category_id = add_category( conn, "Для внутренней канализации", "Трубы для внутренней канализационной системы", main_category_id, image_path="/images/categories/internal_pipes.jpg", page_number=1 ) # Страница 1 external_category_id = add_category( conn, "Для наружной канализации", "Трубы для наружной канализационной системы", main_category_id, image_path="/images/categories/external_pipes.jpg", page_number=1 ) # Дополнительные категории для демонстрации пагинации (страница 2) add_category( conn, "Фитинги для ПВХ труб", "Соединительные элементы для ПВХ труб", main_category_id, image_path="/images/categories/fittings.jpg", page_number=2 ) add_category( conn, "Колена и отводы", "Угловые соединения для ПВХ труб", main_category_id, image_path="/images/categories/elbows.jpg", page_number=2 ) log.info("Категории успешно созданы") add_filter(conn, "Диаметр", "diameter", "multiple") add_filter(conn, "Длина", "length", "multiple") add_filter(conn, "Тип применения", "application_type", "single") add_filter(conn, "Цвет", "color", "single") add_filter(conn, "Класс жесткости", "stiffness_class", "single") add_filter(conn, "Толщина стенки", "wall_thickness", "multiple") log.info("Фильтры успешно добавлены") # Данные продуктов с распределением по страницам products_data = [ # Страница 1 - внутренние трубы {"text": "Труба ПВХ для ВНУТРЕННЕЙ канализации (цвет серый), с внутренней структурной стенкой толщиной 2,2 мм 110х2,2х500", "image": "/images/products/internal_110_500.jpg", "page": 1}, {"text": "Труба ПВХ для ВНУТРЕННЕЙ канализации (цвет серый), с внутренней структурной стенкой толщиной 2,2 мм 110х2,2х1000", "image": "/images/products/internal_110_1000.jpg", "page": 1}, {"text": "Труба ПВХ для ВНУТРЕННЕЙ канализации (цвет серый), с внутренней структурной стенкой толщиной 2,2 мм 110х2,2х1500", "image": "/images/products/internal_110_1500.jpg", "page": 1}, {"text": "Труба ПВХ для ВНУТРЕННЕЙ канализации (цвет серый), с внутренней структурной стенкой толщиной 2,2 мм 110х2,2х2000", "image": "/images/products/internal_110_2000.jpg", "page": 1}, {"text": "Труба ПВХ для ВНУТРЕННЕЙ канализации (цвет серый), с внутренней структурной стенкой толщиной 2,2 мм 110х2,2х3000", "image": "/images/products/internal_110_3000.jpg", "page": 1}, # Страница 1 - наружные трубы {"text": "Труба ПВХ для НАРУЖНОЙ канализации (цвет оранжево-коричневый), с внутренней структурной стенкой, класс жесткости SN4 110х3,2х500", "image": "/images/products/external_110_sn4_500.jpg", "page": 1}, {"text": "Труба ПВХ для НАРУЖНОЙ канализации (цвет оранжево-коричневый), с внутренней структурной стенкой, класс жесткости SN4 110х3,2х1000", "image": "/images/products/external_110_sn4_1000.jpg", "page": 1}, {"text": "Труба ПВХ для НАРУЖНОЙ канализации (цвет оранжево-коричневый), с внутренней структурной стенкой, класс жесткости SN4 110х3,2х2000", "image": "/images/products/external_110_sn4_2000.jpg", "page": 1}, # Страница 2 - оставшиеся наружные трубы {"text": "Труба ПВХ для НАРУЖНОЙ канализации (цвет оранжево-коричневый), с внутренней структурной стенкой, класс жесткости SN4 110х3,2х3000", "image": "/images/products/external_110_sn4_3000.jpg", "page": 2}, {"text": "Труба ПВХ для НАРУЖНОЙ канализации (цвет оранжево-коричневый), с внутренней структурной стенкой, класс жесткости SN4 110х3,2х4000", "image": "/images/products/external_110_sn4_4000.jpg", "page": 2}, {"text": "Труба ПВХ для НАРУЖНОЙ канализации (цвет оранжево-коричневый), с внутренней структурной стенкой, класс жесткости SN2 160х3,6х1000", "image": "/images/products/external_160_sn2_1000.jpg", "page": 2}, {"text": "Труба ПВХ для НАРУЖНОЙ канализации (цвет оранжево-коричневый), с внутренней структурной стенкой, класс жесткости SN2 160х3,6х2000", "image": "/images/products/external_160_sn2_2000.jpg", "page": 2}, {"text": "Труба ПВХ для НАРУЖНОЙ канализации (цвет оранжево-коричневый), с внутренней структурной стенкой, класс жесткости SN2 160х3,6х3000", "image": "/images/products/external_160_sn2_3000.jpg", "page": 2}, ] added_products = 0 for product_info in products_data: product_text = product_info["text"] image_path = product_info["image"] page_number = product_info["page"] if "ВНУТРЕННЕЙ" in product_text: category_id = internal_category_id else: category_id = external_category_id product_id = add_product(conn, product_text, category_id, image_path, page_number) if product_id: added_products += 1 log.info(f"Добавлен товар: {product_text[:50]}... (страница {page_number})") else: log.error(f"Ошибка при добавлении товара: {product_text}") conn.commit() conn.close() log.success(f"Успешно добавлено {added_products} товаров в базу категорий!")