-- Включаем поддержку внешних ключей
PRAGMA foreign_keys = ON;
-- 1. Сначала categories (на неё ссылается courses)
CREATE TABLE IF NOT EXISTS categories (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
icon TEXT
);
-- 2. Потом courses
CREATE TABLE IF NOT EXISTS courses (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
price REAL NOT NULL,
current_discount REAL DEFAULT 0,
is_available INTEGER DEFAULT 1,
category_id INTEGER,
FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE SET NULL
);
-- 3. users (не зависит от других таблиц)
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE,
password TEXT NOT NULL,
is_admin INTEGER DEFAULT 0,
is_premium INTEGER DEFAULT 0,
created_at TEXT DEFAULT (datetime('now'))
);
-- 4. receipts (не зависит от других таблиц)
CREATE TABLE IF NOT EXISTS receipts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
receipt_url TEXT
);
-- 5. user_courses (последней, т.к. ссылается на все остальные)
CREATE TABLE IF NOT EXISTS user_courses (
user_id INTEGER NOT NULL,
course_id INTEGER NOT NULL,
receipt_id INTEGER,
created_at TEXT DEFAULT (datetime('now')),
PRIMARY KEY (user_id, course_id),
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (course_id) REFERENCES courses(id) ON DELETE CASCADE,
FOREIGN KEY (receipt_id) REFERENCES receipts(id) ON DELETE SET NULL
);