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("Начинаем инициализацию базы категорий...") # Базовый URL для статики (замените на ваш реальный домен) base_url = "https://pvh.projects.rustprogersteam.ru/api/image" # Основная категория main_category_id = add_category( conn, "Трубы ПВХ", "Трубы ПВХ для канализационных систем", image_path=f"{base_url}/categories/main0.png" # Оставлено как в оригинале ) # Подкатегории для труб internal_category_id = add_category( conn, "Для внутренней канализации", "Трубы для внутренней канализационной системы", main_category_id, image_path=f"{base_url}/categories/internal_pipes.png" ) external_category_id = add_category( conn, "Для наружной канализации", "Трубы для наружной канализационной системы", main_category_id, image_path=f"{base_url}/categories/external_pipes.png" ) # Категория для фитингов #fittings_category_id = add_category( # conn, # "Фитинги для ПВХ труб", # "Соединительные элементы для ПВХ труб", # main_category_id, # image_path=f"{base_url}/categories/fittings.png" #) # Подкатегории для фитингов elbows_category_id = add_category( conn, "Колена и отводы", "Угловые соединения для ПВХ труб", main_category_id, image_path=f"{base_url}/categories/elbows.png" ) tee_category_id = add_category( conn, "Тройники", "Тройники для разветвления труб", main_category_id, image_path=f"{base_url}/categories/tees.png" ) couplings_category_id = add_category( conn, "Муфты и переходы", "Соединительные муфты и переходники", main_category_id, image_path=f"{base_url}/categories/couplings.png" ) accessories_category_id = add_category( conn, "Заглушки и ревизии", "Заглушки и ревизионные элементы", main_category_id, image_path=f"{base_url}/categories/accessories.png" ) 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") add_filter(conn, "Угол", "angle", "multiple") add_filter(conn, "Тип фитинга", "fitting_type", "single") log.info("Фильтры успешно добавлены") # ==================== ТОВАРЫ ==================== added_products = 0 # 1. Внутренние трубы internal_pipes = [ ("110х2,2х500", 110, 2.2, 500, "серый", "внутренняя", None), ("110х2,2х1000", 110, 2.2, 1000, "серый", "внутренняя", None), ("110х2,2х1500", 110, 2.2, 1500, "серый", "внутренняя", None), ("110х2,2х2000", 110, 2.2, 2000, "серый", "внутренняя", None), ("110х2,2х3000", 110, 2.2, 3000, "серый", "внутренняя", None), ] for size, diameter, thickness, length, color, app_type, stiffness in internal_pipes: full_name = f"Труба НПВХ {diameter}x{thickness}x{length} мм внутренняя" # Замена на внешнюю ссылку image_url = f"{base_url}/products/internal_{diameter}_{length}.png" product_id = add_product( conn, full_name, internal_category_id, image_url, diameter, thickness, length, color, app_type, stiffness ) if product_id: added_products += 1 log.info(f"Добавлен товар: {full_name[:50]}...") # 2. Наружные трубы external_pipes = [ ("110х2,3х500", 110, 2.3, 500, "оранжево-коричневый", "наружная", None), ("110х2,3х1000", 110, 2.3, 1000, "оранжево-коричневый", "наружная", None), ("110х2,3х2000", 110, 2.3, 2000, "оранжево-коричневый", "наружная", None), ("110х2,3х3000", 110, 2.3, 3000, "оранжево-коричневый", "наружная", None), ("110х2,3х4000", 110, 2.3, 4000, "оранжево-коричневый", "наружная", None), ("110х2,7х500 SN2", 110, 2.7, 500, "оранжево-коричневый", "наружная", "SN2"), ("110х2,7х1000 SN2", 110, 2.7, 1000, "оранжево-коричневый", "наружная", "SN2"), ("110х2,7х2000 SN2", 110, 2.7, 2000, "оранжево-коричневый", "наружная", "SN2"), ("110х2,7х3000 SN2", 110, 2.7, 3000, "оранжево-коричневый", "наружная", "SN2"), ("110х2,7х4000 SN2", 110, 2.7, 4000, "оранжево-коричневый", "наружная", "SN2"), ("110х3,2х500 SN4", 110, 3.2, 500, "оранжево-коричневый", "наружная", "SN4"), ("110х3,2х1000 SN4", 110, 3.2, 1000, "оранжево-коричневый", "наружная", "SN4"), ("110х3,2х2000 SN4", 110, 3.2, 2000, "оранжево-коричневый", "наружная", "SN4"), ("110х3,2х3000 SN4", 110, 3.2, 3000, "оранжево-коричневый", "наружная", "SN4"), ("110х3,2х4000 SN4", 110, 3.2, 4000, "оранжево-коричневый", "наружная", "SN4"), ("160х3,6х1000 SN2", 160, 3.6, 1000, "оранжево-коричневый", "наружная", "SN2"), ("160х3,6х2000 SN2", 160, 3.6, 2000, "оранжево-коричневый", "наружная", "SN2"), ("160х3,6х3000 SN2", 160, 3.6, 3000, "оранжево-коричневый", "наружная", "SN2"), ("160х4,0х1000 SN4", 160, 4.0, 1000, "оранжево-коричневый", "наружная", "SN4"), ("160х4,0х2000 SN4", 160, 4.0, 2000, "оранжево-коричневый", "наружная", "SN4"), ("160х4,0х3000 SN4", 160, 4.0, 3000, "оранжево-коричневый", "наружная", "SN4"), ] for size, diameter, thickness, length, color, app_type, stiffness in external_pipes: stiffness_text = f", класс жесткости {stiffness}" if stiffness else "" full_name = f"Труба НПВХ {diameter}x{thickness}x{length} мм наружная" # Замена на внешнюю ссылку suffix = stiffness or 'std' image_url = f"{base_url}/products/external_{diameter}_{suffix}_{length}.png" product_id = add_product( conn, full_name, external_category_id, image_url, diameter, thickness, length, color, app_type, stiffness ) if product_id: added_products += 1 log.info(f"Добавлен товар: {full_name[:50]}...") # 3. Фитинги fittings = [ ("Отвод 110мм на 15°", elbows_category_id, "отвод", 110, None, None, None, None, "15°"), ("Отвод 110мм на 30°", elbows_category_id, "отвод", 110, None, None, None, None, "30°"), ("Отвод 110мм на 45°", elbows_category_id, "отвод", 110, None, None, None, None, "45°"), ("Отвод 110мм на 87°", elbows_category_id, "отвод", 110, None, None, None, None, "87°"), ("Отвод 160мм на 15°", elbows_category_id, "отвод", 160, None, None, None, None, "15°"), ("Отвод 160мм на 30°", elbows_category_id, "отвод", 160, None, None, None, None, "30°"), ("Отвод 160мм на 45°", elbows_category_id, "отвод", 160, None, None, None, None, "45°"), ("Отвод 160мм на 87°", elbows_category_id, "отвод", 160, None, None, None, None, "87°"), ("Тройник 110х110 мм на 45°", tee_category_id, "тройник", 110, None, None, None, None, "45°"), ("Тройник 160х110 мм на 45°", tee_category_id, "тройник", 160, None, None, None, None, "45°"), ("Тройник 160х160 мм на 45°", tee_category_id, "тройник", 160, None, None, None, None, "45°"), ("Тройник 110х110 мм на 87°", tee_category_id, "тройник", 110, None, None, None, None, "87°"), ("Тройник 160х110 мм на 87°", tee_category_id, "тройник", 160, None, None, None, None, "87°"), ("Тройник 160х160 мм на 87°", tee_category_id, "тройник", 160, None, None, None, None, "87°"), ("Муфта надвижная (ремонтная) 110 мм", couplings_category_id, "муфта", 110, None, None, None, None, None), ("Муфта надвижная (ремонтная) 160 мм", couplings_category_id, "муфта", 160, None, None, None, None, None), ("Муфта соединительная 110 мм", couplings_category_id, "муфта", 110, None, None, None, None, None), ("Муфта соединительная 160 мм", couplings_category_id, "муфта", 160, None, None, None, None, None), ("Редуктор 160 мм", couplings_category_id, "редуктор", 160, None, None, None, None, None), ("Заглушка для раструба 110 мм", accessories_category_id, "заглушка", 110, None, None, None, None, None), ("Заглушка для раструба 160 мм", accessories_category_id, "заглушка", 160, None, None, None, None, None), ("Ревизия 110 мм", accessories_category_id, "ревизия", 110, None, None, None, None, None), ("Ревизия 160 мм", accessories_category_id, "ревизия", 160, None, None, None, None, None), ] for name, cat_id, fitting_type, diameter, thickness, length, color, app_type, angle in fittings: full_name = f"{name} для наружной канализации" # Формирование URL для фитингов file_name = name.lower().replace(' ', '_').replace('°', 'deg') image_url = f"{base_url}/products/fittings/{file_name}.png" product_id = add_product( conn, full_name, cat_id, image_url, diameter, thickness, length, color, app_type, None, fitting_type=fitting_type, angle=angle ) if product_id: added_products += 1 log.info(f"Добавлен товар: {full_name[:50]}...") conn.commit() conn.close() log.success(f"Успешно добавлено {added_products} товаров в базу данных!")