fix
This commit is contained in:
@@ -1,7 +1,3 @@
|
||||
-- 001_initial_schema.sql
|
||||
-- Создание базовых таблиц для AETERNA
|
||||
|
||||
-- Таблица пользователей
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
user_id SERIAL PRIMARY KEY,
|
||||
email VARCHAR(255) UNIQUE NOT NULL,
|
||||
@@ -16,7 +12,6 @@ CREATE TABLE IF NOT EXISTS users (
|
||||
is_admin BOOLEAN DEFAULT FALSE
|
||||
);
|
||||
|
||||
-- Таблица категорий
|
||||
CREATE TABLE IF NOT EXISTS categories (
|
||||
category_id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
@@ -29,7 +24,6 @@ CREATE TABLE IF NOT EXISTS categories (
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Таблица подкатегорий
|
||||
CREATE TABLE IF NOT EXISTS subcategories (
|
||||
subcategory_id SERIAL PRIMARY KEY,
|
||||
category_id INTEGER REFERENCES categories(category_id) ON DELETE CASCADE,
|
||||
@@ -41,7 +35,6 @@ CREATE TABLE IF NOT EXISTS subcategories (
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Таблица товаров
|
||||
CREATE TABLE IF NOT EXISTS products (
|
||||
product_id SERIAL PRIMARY KEY,
|
||||
category_id INTEGER REFERENCES categories(category_id) ON DELETE SET NULL,
|
||||
@@ -64,10 +57,8 @@ CREATE TABLE IF NOT EXISTS products (
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Индексы для быстрого поиска
|
||||
CREATE INDEX IF NOT EXISTS idx_products_category ON products(category_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_products_available ON products(is_available);
|
||||
CREATE INDEX IF NOT EXISTS idx_products_price ON products(price);
|
||||
CREATE INDEX IF NOT EXISTS idx_categories_parent ON categories(parent_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_categories_active ON categories(is_active);
|
||||
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
-- 002_add_cart_orders.sql
|
||||
-- Таблицы для корзины и заказов
|
||||
|
||||
-- Таблица корзины
|
||||
CREATE TABLE IF NOT EXISTS cart (
|
||||
cart_id SERIAL PRIMARY KEY,
|
||||
user_id INTEGER REFERENCES users(user_id) ON DELETE CASCADE,
|
||||
@@ -12,36 +8,23 @@ CREATE TABLE IF NOT EXISTS cart (
|
||||
UNIQUE(user_id, product_id)
|
||||
);
|
||||
|
||||
-- Таблица заказов
|
||||
CREATE TABLE IF NOT EXISTS orders (
|
||||
order_id SERIAL PRIMARY KEY,
|
||||
order_number VARCHAR(50) UNIQUE NOT NULL,
|
||||
user_id INTEGER REFERENCES users(user_id) ON DELETE SET NULL,
|
||||
|
||||
-- Контактная информация
|
||||
customer_name VARCHAR(100) NOT NULL,
|
||||
customer_email VARCHAR(255) NOT NULL,
|
||||
customer_phone VARCHAR(20) NOT NULL,
|
||||
|
||||
-- Адрес доставки
|
||||
delivery_address TEXT NOT NULL,
|
||||
delivery_region VARCHAR(100),
|
||||
postal_code VARCHAR(20),
|
||||
|
||||
-- Способы
|
||||
delivery_method VARCHAR(50) DEFAULT 'courier',
|
||||
payment_method VARCHAR(50) DEFAULT 'card',
|
||||
|
||||
-- Суммы
|
||||
subtotal DECIMAL(10, 2) NOT NULL,
|
||||
discount_amount DECIMAL(10, 2) DEFAULT 0,
|
||||
delivery_price DECIMAL(10, 2) DEFAULT 0,
|
||||
final_amount DECIMAL(10, 2) NOT NULL,
|
||||
|
||||
-- Промокод
|
||||
promo_code VARCHAR(50),
|
||||
|
||||
-- Статус и даты
|
||||
status VARCHAR(30) DEFAULT 'pending',
|
||||
notes TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
@@ -49,7 +32,6 @@ CREATE TABLE IF NOT EXISTS orders (
|
||||
completed_at TIMESTAMP
|
||||
);
|
||||
|
||||
-- Таблица позиций заказа
|
||||
CREATE TABLE IF NOT EXISTS order_items (
|
||||
item_id SERIAL PRIMARY KEY,
|
||||
order_id INTEGER REFERENCES orders(order_id) ON DELETE CASCADE,
|
||||
@@ -61,10 +43,8 @@ CREATE TABLE IF NOT EXISTS order_items (
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Индексы
|
||||
CREATE INDEX IF NOT EXISTS idx_cart_user ON cart(user_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_orders_user ON orders(user_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_orders_status ON orders(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_orders_created ON orders(created_at);
|
||||
CREATE INDEX IF NOT EXISTS idx_order_items_order ON order_items(order_id);
|
||||
|
||||
|
||||
@@ -1,57 +1,43 @@
|
||||
-- 003_add_product_fields.sql
|
||||
-- Добавление дополнительных полей (если таблицы уже существуют)
|
||||
|
||||
-- Добавляем поля в products если их нет
|
||||
DO $$
|
||||
BEGIN
|
||||
-- color
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_name = 'products' AND column_name = 'color') THEN
|
||||
ALTER TABLE products ADD COLUMN color VARCHAR(50);
|
||||
END IF;
|
||||
|
||||
-- material
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_name = 'products' AND column_name = 'material') THEN
|
||||
ALTER TABLE products ADD COLUMN material VARCHAR(100);
|
||||
END IF;
|
||||
|
||||
-- card_size
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_name = 'products' AND column_name = 'card_size') THEN
|
||||
ALTER TABLE products ADD COLUMN card_size VARCHAR(20) DEFAULT 'small';
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- Добавляем поля в users если их нет
|
||||
DO $$
|
||||
BEGIN
|
||||
-- city
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_name = 'users' AND column_name = 'city') THEN
|
||||
ALTER TABLE users ADD COLUMN city VARCHAR(100);
|
||||
END IF;
|
||||
|
||||
-- last_login
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_name = 'users' AND column_name = 'last_login') THEN
|
||||
ALTER TABLE users ADD COLUMN last_login TIMESTAMP;
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- Добавляем поля в categories если их нет
|
||||
DO $$
|
||||
BEGIN
|
||||
-- updated_at
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_name = 'categories' AND column_name = 'updated_at') THEN
|
||||
ALTER TABLE categories ADD COLUMN updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
|
||||
END IF;
|
||||
|
||||
-- created_at
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_name = 'categories' AND column_name = 'created_at') THEN
|
||||
ALTER TABLE categories ADD COLUMN created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
|
||||
@@ -1,14 +1,9 @@
|
||||
-- 004_grant_admin_to_admin_mail.sql
|
||||
-- Миграция: Назначение прав администратора пользователю admin@mail.ru
|
||||
|
||||
-- Обновляем пользователя admin@mail.ru, давая ему права администратора
|
||||
UPDATE users
|
||||
SET is_admin = TRUE,
|
||||
is_active = TRUE,
|
||||
updated_at = CURRENT_TIMESTAMP
|
||||
WHERE email = 'admin@mail.ru';
|
||||
|
||||
-- Проверяем результат
|
||||
DO $$
|
||||
DECLARE
|
||||
updated_count INTEGER;
|
||||
@@ -17,7 +12,6 @@ BEGIN
|
||||
GET DIAGNOSTICS updated_count = ROW_COUNT;
|
||||
|
||||
IF updated_count > 0 THEN
|
||||
-- Получаем информацию об обновленном пользователе
|
||||
SELECT user_id, email, full_name, is_admin, is_active
|
||||
INTO user_info
|
||||
FROM users
|
||||
@@ -28,11 +22,10 @@ BEGIN
|
||||
RAISE NOTICE 'ФИО: %, Админ: %, Активен: %',
|
||||
user_info.full_name, user_info.is_admin, user_info.is_active;
|
||||
ELSE
|
||||
-- Если пользователь не найден, создаем его с правами админа
|
||||
INSERT INTO users (email, password_hash, full_name, phone, city, is_admin, is_active)
|
||||
VALUES (
|
||||
'admin@mail.ru',
|
||||
'$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', -- admin123
|
||||
'$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi',
|
||||
'Администратор',
|
||||
'+79129991223',
|
||||
'Москва',
|
||||
@@ -47,4 +40,3 @@ BEGIN
|
||||
RAISE NOTICE 'Пользователь admin@mail.ru создан/обновлен с правами администратора';
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
-- seed_data.sql
|
||||
-- Начальные данные для AETERNA
|
||||
|
||||
-- Администратор (пароль: admin123)
|
||||
INSERT INTO users (email, password_hash, full_name, phone, city, is_admin, is_active)
|
||||
VALUES (
|
||||
'admin@aeterna.ru',
|
||||
'$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', -- admin123
|
||||
'$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi',
|
||||
'Администратор AETERNA',
|
||||
'+79129991223',
|
||||
'Москва',
|
||||
@@ -13,11 +9,10 @@ VALUES (
|
||||
TRUE
|
||||
) ON CONFLICT (email) DO NOTHING;
|
||||
|
||||
-- Тестовый пользователь (пароль: user123)
|
||||
INSERT INTO users (email, password_hash, full_name, phone, city, is_admin, is_active)
|
||||
VALUES (
|
||||
'user@test.com',
|
||||
'$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', -- user123
|
||||
'$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm',
|
||||
'Тестовый Пользователь',
|
||||
'+79111234567',
|
||||
'Санкт-Петербург',
|
||||
@@ -25,7 +20,6 @@ VALUES (
|
||||
TRUE
|
||||
) ON CONFLICT (email) DO NOTHING;
|
||||
|
||||
-- Категории
|
||||
INSERT INTO categories (name, slug, description, sort_order, is_active) VALUES
|
||||
('Диваны', 'divany', 'Прямые и угловые диваны для гостиной', 1, TRUE),
|
||||
('Кресла', 'kresla', 'Кресла для гостиной и офиса', 2, TRUE),
|
||||
@@ -35,7 +29,6 @@ INSERT INTO categories (name, slug, description, sort_order, is_active) VALUES
|
||||
('Светильники', 'svetilniki', 'Торшеры, люстры и настольные лампы', 6, TRUE)
|
||||
ON CONFLICT (slug) DO NOTHING;
|
||||
|
||||
-- Товары
|
||||
INSERT INTO products (category_id, name, slug, description, price, old_price, sku, stock_quantity, is_available, image_url, color, material, card_size) VALUES
|
||||
(1, 'Светильник MINNIGHT', 'svetilnik-minnight', 'Настольный светильник в современном стиле', 7999, 9999, 'LAMP-MIN-001', 15, TRUE, 'img2/1_2.png', 'Черный', 'Металл', 'small'),
|
||||
(3, 'Кровать MODER', 'krovat-moder', 'Двуспальная кровать с мягким изголовьем', 45999, 55999, 'BED-MOD-001', 5, TRUE, 'img2/3_3.png', 'Серый', 'Дерево/Ткань', 'large'),
|
||||
@@ -48,7 +41,6 @@ INSERT INTO products (category_id, name, slug, description, price, old_price, sk
|
||||
(1, 'Диван HEMMINS', 'divan-hemmins', 'Большой модульный диван для всей семьи', 89999, 110000, 'SOFA-HEM-001', 2, TRUE, 'img2/9_9.png', 'Темно-серый', 'Ткань', 'full-width')
|
||||
ON CONFLICT (slug) DO NOTHING;
|
||||
|
||||
-- Выводим статистику
|
||||
DO $$
|
||||
DECLARE
|
||||
users_count INTEGER;
|
||||
@@ -62,4 +54,3 @@ BEGIN
|
||||
RAISE NOTICE 'Загружено: % пользователей, % категорий, % товаров',
|
||||
users_count, categories_count, products_count;
|
||||
END $$;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user