91 lines
2.9 KiB
SQL
91 lines
2.9 KiB
SQL
-- db/init.sql
|
|
-- Создаёт таблицы для хранения пользователей, ключей маркетплейсов, кейсов и файлов
|
|
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id SERIAL PRIMARY KEY,
|
|
username VARCHAR(50) UNIQUE NOT NULL,
|
|
password_hash TEXT NOT NULL,
|
|
role VARCHAR(20) DEFAULT 'admin', -- admin, manager, viewer
|
|
parent_id INT REFERENCES users(id) ON DELETE CASCADE,
|
|
plan VARCHAR(20) DEFAULT 'free',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS repricer_rules (
|
|
id SERIAL PRIMARY KEY,
|
|
user_id INT REFERENCES users(id) ON DELETE CASCADE,
|
|
product_name VARCHAR(255) NOT NULL,
|
|
sku VARCHAR(100) NOT NULL,
|
|
min_price DECIMAL(10, 2) NOT NULL,
|
|
max_price DECIMAL(10, 2) NOT NULL,
|
|
strategy VARCHAR(20) DEFAULT 'follow_competitor', -- follow_competitor, match_lowest
|
|
is_active BOOLEAN DEFAULT TRUE,
|
|
current_price DECIMAL(10, 2),
|
|
last_run TIMESTAMP,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS credentials (
|
|
user_id INT REFERENCES users(id) ON DELETE CASCADE,
|
|
platform VARCHAR(50),
|
|
api_key TEXT,
|
|
client_id TEXT,
|
|
client_secret TEXT,
|
|
other_data JSONB,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (user_id, platform)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS cases (
|
|
id SERIAL PRIMARY KEY,
|
|
user_id INT REFERENCES users(id) ON DELETE CASCADE,
|
|
platform VARCHAR(50) NOT NULL DEFAULT 'ozon',
|
|
violator_url TEXT NOT NULL,
|
|
violator_article VARCHAR(50) NOT NULL,
|
|
my_article VARCHAR(50),
|
|
comment TEXT,
|
|
status VARCHAR(20) DEFAULT 'new',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS files (
|
|
id SERIAL PRIMARY KEY,
|
|
case_id INT REFERENCES cases(id) ON DELETE CASCADE,
|
|
file_path TEXT NOT NULL,
|
|
uploaded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS audit_log (
|
|
id SERIAL PRIMARY KEY,
|
|
user_id INT REFERENCES users(id) ON DELETE CASCADE,
|
|
action VARCHAR(100) NOT NULL,
|
|
details JSONB,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS seo_keywords (
|
|
id SERIAL PRIMARY KEY,
|
|
user_id INT REFERENCES users(id) ON DELETE CASCADE,
|
|
keyword VARCHAR(255) NOT NULL,
|
|
article VARCHAR(100) NOT NULL,
|
|
platform VARCHAR(50) NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS seo_history (
|
|
id SERIAL PRIMARY KEY,
|
|
keyword_id INT REFERENCES seo_keywords(id) ON DELETE CASCADE,
|
|
position INT,
|
|
checked_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS reference_images (
|
|
id SERIAL PRIMARY KEY,
|
|
user_id INT REFERENCES users(id) ON DELETE CASCADE,
|
|
file_path TEXT NOT NULL,
|
|
image_hash VARCHAR(64),
|
|
article VARCHAR(100),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|