Skip to content

Latest commit

 

History

History
120 lines (96 loc) · 4.52 KB

File metadata and controls

120 lines (96 loc) · 4.52 KB

🐘 PostgreSQL Setup Instructions

Since you have PostgreSQL installed, you need to create the database tables first.

Step 1: Create Database (if not exists)

-- Connect to PostgreSQL as postgres user
psql -U postgres

-- Create database (if not exists)
CREATE DATABASE powerpc_db;

-- Connect to your database
\c powerpc_db

Step 2: Create Tables

Run this PostgreSQL SQL to create all required tables:

-- ===== ТАБЛИЦА ПОЛЬЗОВАТЕЛЕЙ =====
CREATE TABLE IF NOT EXISTS users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    phone VARCHAR(20),
    password_hash VARCHAR(255) NOT NULL,
    address TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- ===== ТАБЛИЦА ПРОДУКТОВ =====
CREATE TABLE IF NOT EXISTS products (
    id SERIAL PRIMARY KEY,
    model VARCHAR(50) NOT NULL UNIQUE,
    title VARCHAR(200) NOT NULL,
    subtitle VARCHAR(300),
    price DECIMAL(10,2) NOT NULL,
    old_price DECIMAL(10,2),
    discount VARCHAR(10),
    badge VARCHAR(50),
    main_image VARCHAR(255),
    short_specs TEXT,
    description TEXT,
    stock INTEGER DEFAULT 0,
    is_active BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- ===== ТАБЛИЦА ЗАКАЗОВ =====
CREATE TABLE IF NOT EXISTS orders (
    id SERIAL PRIMARY KEY,
    order_number VARCHAR(50) UNIQUE NOT NULL,
    user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
    total_amount DECIMAL(10,2) NOT NULL,
    delivery_info JSONB,
    status VARCHAR(20) DEFAULT 'processing' CHECK (status IN ('processing', 'confirmed', 'shipped', 'delivered', 'cancelled')),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- ===== ТАБЛИЦА ТОВАРОВ В ЗАКАЗАХ =====
CREATE TABLE IF NOT EXISTS order_items (
    id SERIAL PRIMARY KEY,
    order_id INTEGER REFERENCES orders(id) ON DELETE CASCADE,
    product_model VARCHAR(100) NOT NULL,
    product_name VARCHAR(255) NOT NULL,
    product_price DECIMAL(10,2) NOT NULL,
    quantity INTEGER NOT NULL CHECK (quantity > 0),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Step 3: Insert Test Data

-- Insert test products
INSERT INTO products (model, title, subtitle, price, old_price, discount, badge, main_image, short_specs, description) VALUES
('green-monster', 'Gamer Beast RTX 4080', 'Легендарная мощь для настоящих геймеров', 245000.00, 299000.00, '-18%', 'ХИТ СЕЗОНА', 'images/Green Monster.jpg', 'Intel i9 • RTX 4080 • 32GB RAM', 'Игровой компьютер высшего класса'),
('office-pro', 'Office Pro i7', 'Идеальное решение для работы', 125000.00, 147000.00, '-15%', 'ПОПУЛЯРНЫЙ', 'images/Blue.webp', 'Intel i7 • RTX 4060 • 16GB RAM', 'Надежный компьютер для офисной работы'),
('stream-master', 'Stream Master', 'Для стримеров и создателей', 189000.00, 252000.00, '-25%', 'ДЛЯ СТРИМЕРОВ', 'images/Red.webp', 'AMD Ryzen 7 • RTX 4070 • 32GB RAM', 'Мощная система для стриминга'),
('budget-warrior', 'Budget Warrior', 'Отличное начало для игр', 89000.00, NULL, NULL, 'ВЫГОДНАЯ ЦЕНА', 'images/Black.jpg', 'AMD Ryzen 5 • RTX 4060 • 16GB RAM', 'Доступный игровой ПК'),
('extreme-overlord', 'Extreme Overlord', 'Абсолютная мощь без компромиссов', 389000.00, NULL, NULL, 'ТОПОВЫЙ', 'images/White.jpg', 'Intel i9 • RTX 4090 • 64GB RAM', 'Топовая система'),
('compact-pro', 'Compact Pro', 'Мощь в компактном корпусе', 112000.00, NULL, NULL, 'КОМПАКТНЫЙ', 'images/PCBack.jpg', 'Intel i5 • RTX 4060 • 16GB RAM', 'Компактный ПК');

Step 4: Test Database Connection

Run this command to test:

psql -U postgres -d powerpc_db -c "SELECT COUNT(*) FROM products;"

Troubleshooting

If you get "database does not exist":

CREATE DATABASE powerpc_db;

If you get "role does not exist":

CREATE USER powerpc_user WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE powerpc_db TO powerpc_user;

Update api/db_config.php with your credentials:

define('DB_USER', 'your_postgres_user');
define('DB_PASS', 'your_postgres_password');

After running these commands, try the checkout again!