/
MarkZhukov
/
web
Обзор
Документация
Войти
/
MarkZhukov
/
web
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
task12
db_seed.sql
65 строк
4 KB
markkentos
add pdf view
04 июн 2026, 01:25
04 июн 2026, 01:25
bb001aa
Код
Авторство
О чём код?
-- Категории INSERT INTO shop_category (id, name) VALUES (1, 'Смартфоны'), (2, 'Ноутбуки') ON CONFLICT (id) DO NOTHING; -- Поставщики INSERT INTO shop_supplier (id, company_name, contact_person, phone, email, website) VALUES (1, 'ООО Дистрибьютор', 'Иван Петров', '+79991112233', 'dist@mail.ru', 'https://dist.ru'), (2, 'АО Импортер', 'Елена Сидорова', '+79994445566', 'import@mail.ru', 'https://import.ru') ON CONFLICT (id) DO NOTHING; -- Товары INSERT INTO shop_product (id, category_id, supplier_id, name, description, sku, price, cost_price, quantity_received, is_active, created_at) VALUES (1, 1, 1, 'iPhone 15 Pro Max', 'Флагман от Apple', 'IPH15PM', 120000.00, 90000.00, 100, TRUE, NOW() - INTERVAL '10 days'), (2, 1, 1, 'Xiaomi 13T', 'Отличный субфлагман', 'XIA13T', 45000.00, 35000.00, 200, TRUE, NOW() - INTERVAL '5 days'), (3, 2, 2, 'MacBook Air M3', 'Тонкий и мощный ноутбук', 'MACAIRM3', 140000.00, 110000.00, 50, TRUE, NOW() - INTERVAL '8 days'), (4, 2, 2, 'Lenovo IdeaPad', 'Бюджетный рабочий ноутбук', 'LENIDEAP', 55000.00, 45000.00, 10, TRUE, NOW() - INTERVAL '2 days') ON CONFLICT (id) DO NOTHING; -- Остатки на складе (сопоставленные с товарами) INSERT INTO shop_stock (id, product_id, quantity_in_stock, reserved_quantity, received_at) VALUES (1, 1, 50, 0, NOW() - INTERVAL '10 days'), (2, 2, 120, 0, NOW() - INTERVAL '5 days'), (3, 3, 20, 0, NOW() - INTERVAL '8 days'), (4, 4, 2, 0, NOW() - INTERVAL '2 days') -- Специально низкий остаток (2 шт.) для теста ON CONFLICT (id) DO NOTHING; -- Клиенты INSERT INTO shop_customer (id, first_name, last_name, email, phone) VALUES (1, 'Иван', 'Иванов', 'ivan@mail.ru', '+79110001122'), (2, 'Мария', 'Петрова', 'maria@mail.ru', '+79223334455') ON CONFLICT (id) DO NOTHING; -- Заказы (начальный неоплаченный заказ) INSERT INTO shop_order (id, customer_id, order_date, status, total_amount, discount_amount, final_amount) VALUES (1, 1, NOW() - INTERVAL '3 days', 'pending', 120000.00, 0.00, 120000.00) ON CONFLICT (id) DO NOTHING; -- Позиции для заказа #1 (1x iPhone 15 Pro Max) -- Примечание: вставляем напрямую, не вызывая триггер списания склада (для чистоты теста триггеров ниже) INSERT INTO shop_orderitem (id, order_id, product_id, quantity, price, line_total) VALUES (1, 1, 1, 1, 120000.00, 120000.00) ON CONFLICT (id) DO NOTHING; -- Акция (10% скидка на товары) INSERT INTO shop_promotion (id, name, discount_type, discount_value, start_date, end_date, is_active) VALUES (1, 'Весенняя распродажа', 'percent', 10.00, CURRENT_DATE - 5, CURRENT_DATE + 5, TRUE) ON CONFLICT (id) DO NOTHING; -- Привязка iPhone 15 Pro Max к акции INSERT INTO shop_productpromotion (product_id, promotion_id) VALUES (1, 1) ON CONFLICT DO NOTHING; -- -- Сбросим последовательности первичных ключей (для корректной работы автоинкремента) -- SELECT setval(pg_get_serial_sequence('shop_category', 'id'), COALESCE(MAX(id), 1)) FROM shop_category; -- SELECT setval(pg_get_serial_sequence('shop_supplier', 'id'), COALESCE(MAX(id), 1)) FROM shop_supplier; -- SELECT setval(pg_get_serial_sequence('shop_product', 'id'), COALESCE(MAX(id), 1)) FROM shop_product; -- SELECT setval(pg_get_serial_sequence('shop_stock', 'id'), COALESCE(MAX(id), 1)) FROM shop_stock; -- SELECT setval(pg_get_serial_sequence('shop_customer', 'id'), COALESCE(MAX(id), 1)) FROM shop_customer; -- SELECT setval(pg_get_serial_sequence('shop_order', 'id'), COALESCE(MAX(id), 1)) FROM shop_order; -- SELECT setval(pg_get_serial_sequence('shop_orderitem', 'id'), COALESCE(MAX(id), 1)) FROM shop_orderitem; -- SELECT setval(pg_get_serial_sequence('shop_payment', 'id'), COALESCE(MAX(id), 1)) FROM shop_payment; -- SELECT setval(pg_get_serial_sequence('shop_promotion', 'id'), COALESCE(MAX(id), 1)) FROM shop_promotion;