Files
AutoMarket/db/init.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
);