122 lines
5.4 KiB
PHP
122 lines
5.4 KiB
PHP
<?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>";
|
||
?>
|