35 lines
1.2 KiB
SQL
35 lines
1.2 KiB
SQL
-- Создание таблиц. Теперь схема версионируется!
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id UUID PRIMARY KEY,
|
|
tg_id BIGINT UNIQUE NOT NULL,
|
|
tg_username VARCHAR(255),
|
|
role VARCHAR(50) NOT NULL DEFAULT 'user',
|
|
balance BIGINT NOT NULL DEFAULT 0,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS referrals (
|
|
referrer_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
referred_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
earned_bonus BIGINT NOT NULL DEFAULT 100,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
PRIMARY KEY (referrer_id, referred_id),
|
|
UNIQUE (referred_id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS subscriptions (
|
|
user_id UUID PRIMARY KEY REFERENCES users(id) ON DELETE CASCADE,
|
|
plan_name VARCHAR(50) NOT NULL DEFAULT 'Free',
|
|
expires_at TIMESTAMPTZ,
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS plans (
|
|
name VARCHAR(50) PRIMARY KEY,
|
|
price BIGINT NOT NULL,
|
|
is_active BOOLEAN NOT NULL DEFAULT TRUE
|
|
);
|
|
|
|
INSERT INTO plans (name, price) VALUES
|
|
('GHOST', 5), ('NETRUNNER', 9), ('MAINFRAME', 20)
|
|
ON CONFLICT (name) DO NOTHING; |