
from faker import Faker
import random

fake = Faker('ru_RU')
random.seed(0)
Faker.seed(0)

# Количество записей (первоначальное)
NUM_ОТДЕЛОВ = 10
NUM_ТОВАРОВ = 20
NUM_ПРОДАЖ = 30

# Если хочешь увеличить в 10 раз — умножь тут
УВЕЛИЧИТЬ_В = 10  # потом меняешь на 1 или 10

NUM_ОТДЕЛОВ *= УВЕЛИЧИТЬ_В
NUM_ТОВАРОВ *= УВЕЛИЧИТЬ_В
NUM_ПРОДАЖ *= УВЕЛИЧИТЬ_В

# Генерация SQL
with open("fill_data.sql", "w", encoding="utf-8") as f:
    f.write("-- SQL script для вставки данных в таблицы\n\n")
    f.write("-- Очистка таблиц перед вставкой\n")
    f.write("TRUNCATE TABLE \"Продажа\" RESTART IDENTITY CASCADE;\n")
    f.write("TRUNCATE TABLE \"Товар\" RESTART IDENTITY CASCADE;\n")
    f.write("TRUNCATE TABLE \"Отдел\" RESTART IDENTITY CASCADE;\n\n")

    # Таблица Отдел
    for i in range(1, NUM_ОТДЕЛОВ + 1):
        код_отдела = i
        инд_отдела = f"OTD-{random.randint(100, 999)}"
        фио = fake.name()
        телефон = f"+7{random.randint(900, 999)}{random.randint(1000000, 9999999)}"
        объем = round(random.uniform(100000, 1000000), 2)
        f.write(f"""INSERT INTO "Отдел" ("Код_отдела", "Инд_отдела", "ФИО_заведующего", "Телефон", "Объём_реализации_д_даты")
VALUES ({код_отдела}, '{инд_отдела}', '{фио}', '{телефон}', {объем});\n""")

    f.write("\n")

    # Таблица Товар
    единицы = ["шт", "кг", "л", "упак", "м"]
    for i in range(1, NUM_ТОВАРОВ + 1):
        артикул = f"ART-{random.randint(10000, 99999)}"
        инд_товара = f"IND-{random.randint(100, 999)}"
        единица = random.choice(единицы)
        цена = round(random.uniform(100, 10000), 2)
        f.write(f"""INSERT INTO "Товар" ("Артикул_товара", "Инд_товара", "Единица_измерения", "Реальная_цена")
VALUES ('{артикул}', '{инд_товара}', '{единица}', {цена});\n""")

    f.write("\n")

    # Таблица Продажа
    for i in range(1, NUM_ПРОДАЖ + 1):
        код_продажи = i
        дата = fake.date_between(start_date='2020-01-01', end_date='2023-12-31')
        количество = random.randint(1, 100)
        код_отдела = random.randint(1, NUM_ОТДЕЛОВ)
        артикул_товара = f"ART-{random.randint(10000, 99999)}"
        f.write(f"""INSERT INTO "Продажа" ("Код_продажи", "Дата_продажи", "Количество", "Код_отдела", "Артикул_товара")
VALUES ({код_продажи}, '{дата}', {количество}, {код_отдела}, '{артикул_товара}');\n""")

    f.write("\n-- Данные успешно сгенерированы!\n")

print("SQL файл успешно создан: fill_data.sql")
