23 lines
964 B
SQL
23 lines
964 B
SQL
-- T0306: Create Track Sharing System Database Model
|
|
-- Create table track_shares with all required fields
|
|
|
|
-- Table track_shares
|
|
CREATE TABLE IF NOT EXISTS track_shares (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
track_id BIGINT NOT NULL REFERENCES tracks(id) ON DELETE CASCADE,
|
|
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
share_token VARCHAR(255) UNIQUE NOT NULL,
|
|
permissions VARCHAR(50) DEFAULT 'read',
|
|
expires_at TIMESTAMP,
|
|
access_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_track_shares_track_id ON track_shares(track_id);
|
|
CREATE INDEX IF NOT EXISTS idx_track_shares_user_id ON track_shares(user_id);
|
|
CREATE INDEX IF NOT EXISTS idx_track_shares_share_token ON track_shares(share_token);
|
|
CREATE INDEX IF NOT EXISTS idx_track_shares_deleted_at ON track_shares(deleted_at);
|
|
|