veza/veza-backend-api/migrations/029_create_track_plays.sql

26 lines
1,006 B
MySQL
Raw Normal View History

2025-12-03 19:29:37 +00:00
-- Migration: Create track_plays table for playback analytics
-- T0291: Create Track Playback Analytics Database Model
CREATE TABLE track_plays (
id BIGSERIAL PRIMARY KEY,
track_id BIGINT NOT NULL REFERENCES tracks(id) ON DELETE CASCADE,
user_id BIGINT REFERENCES users(id) ON DELETE SET NULL,
duration INTEGER NOT NULL,
played_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
device VARCHAR(100),
ip_address VARCHAR(45),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP
);
-- Indexes for performance
CREATE INDEX idx_track_plays_track_id ON track_plays(track_id);
CREATE INDEX idx_track_plays_user_id ON track_plays(user_id);
CREATE INDEX idx_track_plays_played_at ON track_plays(played_at DESC);
CREATE INDEX idx_track_plays_track_played ON track_plays(track_id, played_at DESC);
-- Index for soft deletes
CREATE INDEX idx_track_plays_deleted_at ON track_plays(deleted_at);