26 lines
990 B
SQL
26 lines
990 B
SQL
-- +goose Up
|
|
CREATE TABLE IF NOT EXISTS attachments (
|
|
id BINARY(16) NOT NULL,
|
|
file_id BINARY(16) NOT NULL,
|
|
ref_type VARCHAR(64) NOT NULL,
|
|
ref_id VARCHAR(191) NOT NULL,
|
|
category VARCHAR(64) NULL,
|
|
sort_order INT NOT NULL DEFAULT 0,
|
|
is_primary TINYINT(1) NOT NULL DEFAULT 0,
|
|
attached_by BINARY(16) NULL,
|
|
created_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
|
updated_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
|
PRIMARY KEY (id),
|
|
CONSTRAINT fk_attachments_file
|
|
FOREIGN KEY (file_id) REFERENCES file_files(id)
|
|
ON UPDATE CASCADE
|
|
ON DELETE CASCADE,
|
|
UNIQUE KEY uq_attachments_ref_file (ref_type, ref_id, file_id),
|
|
KEY idx_attachments_file_id (file_id),
|
|
KEY idx_attachments_ref_sort (ref_type, ref_id, sort_order, created_at),
|
|
KEY idx_attachments_ref_category (ref_type, ref_id, category)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- +goose Down
|
|
DROP TABLE IF EXISTS attachments;
|