Files
PVHBackend/db/InitializeDB.py
T

73 lines
2.9 KiB
Python

import sqlite3
from loguru import logger as log
def init_database(db_name='pipe_store.db'):
conn = sqlite3.connect(db_name)
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS categories (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL UNIQUE,
description TEXT,
parent_id INTEGER,
image_path TEXT,
page_number INTEGER DEFAULT 1, -- Новое поле: номер страницы для пагинации
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (parent_id) REFERENCES categories (id)
)
''')
cursor.execute('''
CREATE TABLE IF NOT EXISTS products (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
full_name TEXT NOT NULL,
description TEXT,
category_id INTEGER NOT NULL,
diameter INTEGER,
wall_thickness REAL,
length INTEGER,
color TEXT,
application_type TEXT, -- внутренняя/наружная
stiffness_class TEXT, -- SN4, SN2 и т.д.
image_path TEXT,
page_number INTEGER DEFAULT 1, -- Новое поле: номер страницы для пагинации
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (category_id) REFERENCES categories (id)
)
''')
cursor.execute('''
CREATE TABLE IF NOT EXISTS filters (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
filter_key TEXT NOT NULL UNIQUE, -- ключ для фильтрации
filter_type TEXT DEFAULT 'single' -- 'single' или 'multiple'
)
''')
cursor.execute('''
CREATE TABLE IF NOT EXISTS product_filters (
id INTEGER PRIMARY KEY AUTOINCREMENT,
product_id INTEGER NOT NULL,
filter_key TEXT NOT NULL,
value TEXT NOT NULL,
FOREIGN KEY (product_id) REFERENCES products (id),
FOREIGN KEY (filter_key) REFERENCES filters (filter_key),
UNIQUE(product_id, filter_key)
)
''')
cursor.execute('CREATE INDEX IF NOT EXISTS idx_products_category ON products(category_id)')
cursor.execute('CREATE INDEX IF NOT EXISTS idx_products_diameter ON products(diameter)')
cursor.execute('CREATE INDEX IF NOT EXISTS idx_products_length ON products(length)')
cursor.execute('CREATE INDEX IF NOT EXISTS idx_products_page ON products(page_number)')
cursor.execute('CREATE INDEX IF NOT EXISTS idx_categories_page ON categories(page_number)')
cursor.execute('CREATE INDEX IF NOT EXISTS idx_product_filters_key_value ON product_filters(filter_key, value)')
conn.commit()
conn.close()
log.success("База данных успешно инициализирована!")