merch-api/merch.sql

84 lines
2.9 KiB
MySQL
Raw Normal View History

2026-03-01 22:14:28 +03:00
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,
2026-03-04 16:58:42 +03:00
user_id BIGINT NOT NULL,
2026-03-11 20:33:50 +03:00
name TEXT NULL,
2026-03-01 22:14:28 +03:00
CONSTRAINT fk_merch_user_id FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
2026-03-10 21:33:55 +03:00
CREATE INDEX idx_merch_user ON merch (user_id);
2026-03-01 22:14:28 +03:00
CREATE TABLE merch_origins (
id BIGSERIAL PRIMARY KEY,
created_at TIMESTAMP WITH TIME ZONE NOT NULL,
deleted_at TIMESTAMP WITH TIME ZONE NULL,
2026-03-11 20:33:50 +03:00
name TEXT NULL
2026-03-01 22:14:28 +03:00
);
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,
2026-03-08 14:27:31 +03:00
merch_id INT NOT NULL,
2026-03-01 22:14:28 +03:00
origin_id INT NOT NULL,
2026-03-08 15:12:32 +03:00
price INT NOT NULL,
2026-03-01 22:14:28 +03:00
2026-03-08 14:27:31 +03:00
CONSTRAINT fk_merch_prices_merch_merch_id FOREIGN KEY (merch_id) REFERENCES merch(id) ON DELETE CASCADE,
2026-03-01 22:14:28 +03:00
CONSTRAINT fk_merch_prices_merch_origins_id FOREIGN KEY (origin_id) REFERENCES merch_origins(id) ON DELETE CASCADE
2026-03-02 17:30:36 +03:00
);
2026-03-10 21:33:55 +03:00
CREATE INDEX idx_merch_prices_active ON merch_prices (merch_id, deleted_at, created_at);
2026-03-02 17:30:36 +03:00
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
);
2026-03-11 20:33:50 +03:00
CREATE UNIQUE INDEX idx_merch_extra_data_merch_origin_id ON merch_extra_data (merch_id, origin_id);
CREATE TABLE labels (
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,
user_id BIGINT NOT NULL,
uuid VARCHAR(36) NOT NULL UNIQUE,
name TEXT NULL,
color VARCHAR(50),
bg_color VARCHAR(50),
CONSTRAINT fk_labels_users_user_id FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
CREATE TABLE card_labels (
user_id BIGINT NOT NULL,
label_id BIGINT NOT NULL,
merch_id BIGINT NOT NULL,
CONSTRAINT fk_card_labels_users_user_id FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
CONSTRAINT fk_card_labels_labels_label_id FOREIGN KEY (label_id) REFERENCES labels(id) ON DELETE CASCADE,
CONSTRAINT fk_card_labels_merch_merch_id FOREIGN KEY (merch_id) REFERENCES merch(id) ON DELETE CASCADE
);