veza/veza-backend-api/migrations/025_create_tracks.sql
2025-12-03 20:29:37 +01:00

33 lines
1.1 KiB
SQL

-- T0251: Create Track Database Model
-- Create table tracks with all required fields
-- Table tracks
CREATE TABLE IF NOT EXISTS tracks (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
title VARCHAR(255) NOT NULL,
artist VARCHAR(255),
album VARCHAR(255),
duration INTEGER NOT NULL,
genre VARCHAR(100),
year INTEGER DEFAULT 0,
file_path VARCHAR(500) NOT NULL,
file_size BIGINT NOT NULL,
format VARCHAR(10),
bitrate INTEGER DEFAULT 0,
sample_rate INTEGER DEFAULT 0,
waveform_path VARCHAR(500),
cover_art_path VARCHAR(500),
is_public BOOLEAN DEFAULT TRUE,
play_count BIGINT DEFAULT 0,
like_count BIGINT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP
);
-- Indexes
CREATE INDEX IF NOT EXISTS idx_tracks_user_id ON tracks(user_id);
CREATE INDEX IF NOT EXISTS idx_tracks_is_public ON tracks(is_public);
CREATE INDEX IF NOT EXISTS idx_tracks_created_at ON tracks(created_at);