merch-api/merch.sql
2026-03-02 17:30:36 +03:00

54 lines
No EOL
1.8 KiB
SQL

CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP WITH TIME ZONE NULL,
deleted_at TIMESTAMP WITH TIME ZONE NULL,
uuid VARCHAR(36) NOT NULL UNIQUE
);
CREATE TABLE merch (
id BIGSERIAL PRIMARY KEY,
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP WITH TIME ZONE NULL,
deleted_at TIMESTAMP WITH TIME ZONE NULL,
merch_uuid VARCHAR(36) NOT NULL UNIQUE,
user_id BIGINT NOT NULL UNIQUE,
name VARCHAR(255) NULL,
CONSTRAINT fk_merch_user_id FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
CREATE TABLE merch_origins (
id BIGSERIAL PRIMARY KEY,
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
deleted_at TIMESTAMP WITH TIME ZONE NULL,
name VARCHAR(255) NULL
);
CREATE TABLE merch_prices (
id BIGSERIAL PRIMARY KEY,
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP WITH TIME ZONE NULL,
deleted_at TIMESTAMP WITH TIME ZONE NULL,
merch_uuid VARCHAR(36) NOT NULL UNIQUE,
price INT NOT NULL,
origin_id INT NOT NULL,
CONSTRAINT fk_merch_prices_merch_origins_id FOREIGN KEY (origin_id) REFERENCES merch_origins(id) ON DELETE CASCADE
);
CREATE TABLE merch_extra_data (
id BIGSERIAL PRIMARY KEY,
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
updated_at TIMESTAMP WITH TIME ZONE NULL,
deleted_at TIMESTAMP WITH TIME ZONE NULL,
merch_id BIGINT NOT NULL,
origin_id BIGINT NOT NULL,
url TEXT DEFAULT NULL,
CONSTRAINT fk_merch_extra_data_merch_id FOREIGN KEY (merch_id) REFERENCES merch(id) ON DELETE CASCADE,
CONSTRAINT fk_merch_extra_data_merch_origins_id FOREIGN KEY (origin_id) REFERENCES merch_origins(id) ON DELETE CASCADE
);
CREATE INDEX idx_merch_extra_data_merch_id ON merch_extra_data(merch_id);