28 lines
1 KiB
MySQL
28 lines
1 KiB
MySQL
|
|
-- T0321: Create Track Versioning Database Model
|
||
|
|
-- Create table track_versions for track versioning
|
||
|
|
|
||
|
|
-- Table track_versions
|
||
|
|
CREATE TABLE IF NOT EXISTS track_versions (
|
||
|
|
id BIGSERIAL PRIMARY KEY,
|
||
|
|
track_id BIGINT NOT NULL REFERENCES tracks(id) ON DELETE CASCADE,
|
||
|
|
version_number INTEGER NOT NULL,
|
||
|
|
file_path VARCHAR(500) NOT NULL,
|
||
|
|
file_size BIGINT NOT NULL,
|
||
|
|
changelog TEXT,
|
||
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
deleted_at TIMESTAMP,
|
||
|
|
|
||
|
|
-- Unique constraint: one version number per track
|
||
|
|
UNIQUE(track_id, version_number)
|
||
|
|
);
|
||
|
|
|
||
|
|
-- Indexes for performance
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_track_versions_track_id ON track_versions(track_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_track_versions_created_at ON track_versions(created_at DESC);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_track_versions_track_version ON track_versions(track_id, version_number DESC);
|
||
|
|
|
||
|
|
-- Index for soft deletes
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_track_versions_deleted_at ON track_versions(deleted_at);
|
||
|
|
|