Files
web_work/ init_db.php
2025-12-16 01:28:06 +03:00

122 lines
5.4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
require_once 'config/database.php';
$db = Database::getInstance()->getConnection();
// Создаем таблицы, если они не существуют
$tables = [
'users' => "
CREATE TABLE IF NOT EXISTS users (
user_id SERIAL PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
full_name VARCHAR(100) NOT NULL,
phone VARCHAR(20),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
is_active BOOLEAN DEFAULT TRUE,
is_admin BOOLEAN DEFAULT FALSE
)
",
'categories' => "
CREATE TABLE IF NOT EXISTS categories (
category_id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
slug VARCHAR(100) UNIQUE NOT NULL,
parent_id INTEGER REFERENCES categories(category_id),
description TEXT,
sort_order INTEGER DEFAULT 0,
is_active BOOLEAN DEFAULT TRUE
)
",
'products' => "
CREATE TABLE IF NOT EXISTS products (
product_id SERIAL PRIMARY KEY,
category_id INTEGER REFERENCES categories(category_id),
name VARCHAR(200) NOT NULL,
slug VARCHAR(200) UNIQUE NOT NULL,
description TEXT,
price DECIMAL(10, 2) NOT NULL,
old_price DECIMAL(10, 2),
sku VARCHAR(50) UNIQUE,
stock_quantity INTEGER DEFAULT 0,
is_available BOOLEAN DEFAULT TRUE,
is_featured BOOLEAN DEFAULT FALSE,
rating DECIMAL(3, 2) DEFAULT 0,
review_count INTEGER DEFAULT 0,
image_url VARCHAR(500),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
"
];
foreach ($tables_to_create as $table_name => $sql) {
try {
$db->exec($sql);
echo "Таблица '$table_name' создана/проверена<br>";
} catch (PDOException $e) {
echo "Ошибка создания таблицы '$table_name': " . $e->getMessage() . "<br>";
}
}
// Добавляем тестовые данные
// Проверяем, есть ли уже категории
$check_categories = $db->query("SELECT COUNT(*) FROM categories")->fetchColumn();
if ($check_categories == 0) {
// Добавляем категории
$categories = [
['Мягкая мебель', 'myagkaya-mebel', NULL, 'Диваны, кресла, пуфы'],
['Диваны', 'divany', 1, 'Прямые и угловые диваны'],
['Кресла', 'kresla', 1, 'Кресла для гостиной и офиса'],
['Спальня', 'spalnya', NULL, 'Кровати, тумбы, комоды'],
['Кровати', 'krovati', 4, 'Односпальные и двуспальные кровати']
];
foreach ($categories as $category) {
$stmt = $db->prepare("INSERT INTO categories (name, slug, parent_id, description) VALUES (?, ?, ?, ?)");
$stmt->execute($category);
}
echo "Добавлены категории<br>";
}
// Проверяем, есть ли уже товары
$check_products = $db->query("SELECT COUNT(*) FROM products")->fetchColumn();
if ($check_products == 0) {
// Добавляем товары
$products = [
[2, 'Диван VELVET', 'divan-velvet', 'Прямой диван с тканевой обивкой', 45999, 54999, 'DIV-VEL-001', 10],
[2, 'Диван MODERN', 'divan-modern', 'Угловой диван с кожаной обивкой', 78999, 89999, 'DIV-MOD-002', 5],
[3, 'Кресло OPPORTUNITY', 'kreslo-opportunity', 'Кресло с деревянными ножками', 16999, 19999, 'KRES-OPP-001', 15],
[3, 'Кресло GOLDEN', 'kreslo-golden', 'Золотистое кресло для гостиной', 19999, 23999, 'KRES-GOL-002', 8],
[5, 'Кровать CLASSIC', 'krovat-classic', 'Двуспальная кровать из массива дуба', 64999, 74999, 'KROV-CLA-001', 3]
];
foreach ($products as $product) {
$stmt = $db->prepare("INSERT INTO products (category_id, name, slug, description, price, old_price, sku, stock_quantity)
VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->execute($product);
}
echo "Добавлены товары<br>";
}
// Проверяем, есть ли администратор
$check_admin = $db->prepare("SELECT COUNT(*) FROM users WHERE email = ?");
$check_admin->execute(['admin@aeterna.ru']);
if ($check_admin->fetchColumn() == 0) {
// Добавляем администратора (пароль: admin123)
$admin_password = password_hash('admin123', PASSWORD_DEFAULT);
$stmt = $db->prepare("INSERT INTO users (email, password_hash, full_name, phone, is_admin)
VALUES (?, ?, ?, ?, ?)");
$stmt->execute(['admin@aeterna.ru', $admin_password, 'Администратор AETERNA', '+79129991223', true]);
echo "Добавлен администратор (email: admin@aeterna.ru, пароль: admin123)<br>";
}
echo "<h3>База данных успешно инициализирована!</h3>";
echo "<a href='catalog.php'>Перейти в каталог</a>";
?>