33 lines
1.1 KiB
SQL
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);
|
|
|