Загрузка данных


-- 1. Таблица категорий (categories)
CREATE TABLE categories (
    id SERIAL PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    icon VARCHAR(255)
);

-- 2. Таблица курсов (courses)
CREATE TABLE courses (
    id SERIAL PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    price DECIMAL(10, 2) NOT NULL,
    current_discount DECIMAL(10, 2) DEFAULT 0,
    is_available BOOLEAN DEFAULT TRUE,
    category_id INTEGER,
    CONSTRAINT fk_courses_category FOREIGN KEY (category_id) REFERENCES categories(id)
);

-- 3. Таблица пользователей (users)
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    first_name VARCHAR(100) NOT NULL,
    last_name VARCHAR(100) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    password VARCHAR(255) NOT NULL,
    is_admin BOOLEAN DEFAULT FALSE,
    is_premium BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 4. Таблица чеков (receipts)
CREATE TABLE receipts (
    id SERIAL PRIMARY KEY,
    receipt_url TEXT
);

-- 5. Таблица связи (user_courses)
-- Внимание: здесь составной первичный ключ, автоувеличение для него не применяется.
CREATE TABLE user_courses (
    user_id INTEGER,
    course_id INTEGER,
    receipt_id INTEGER,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (user_id, course_id),
    CONSTRAINT fk_uc_user FOREIGN KEY (user_id) REFERENCES users(id),
    CONSTRAINT fk_uc_course FOREIGN KEY (course_id) REFERENCES courses(id),
    CONSTRAINT fk_uc_receipt FOREIGN KEY (receipt_id) REFERENCES receipts(id)
);