26 lines
1.1 KiB
MySQL
26 lines
1.1 KiB
MySQL
|
|
-- 081_create_playback_analytics.sql
|
||
|
|
-- Playback analytics for track listening events (BE-API-019)
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS public.playback_analytics (
|
||
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
|
|
track_id UUID NOT NULL REFERENCES public.tracks(id) ON DELETE CASCADE,
|
||
|
|
user_id UUID NOT NULL REFERENCES public.users(id) ON DELETE CASCADE,
|
||
|
|
|
||
|
|
play_time INT NOT NULL DEFAULT 0,
|
||
|
|
pause_count INT NOT NULL DEFAULT 0,
|
||
|
|
seek_count INT NOT NULL DEFAULT 0,
|
||
|
|
completion_rate DECIMAL(5,2) NOT NULL DEFAULT 0,
|
||
|
|
|
||
|
|
started_at TIMESTAMPTZ NOT NULL,
|
||
|
|
ended_at TIMESTAMPTZ,
|
||
|
|
|
||
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_playback_analytics_track_id ON public.playback_analytics(track_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_playback_analytics_user_id ON public.playback_analytics(user_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_playback_analytics_created_at ON public.playback_analytics(created_at);
|
||
|
|
|
||
|
|
COMMENT ON TABLE public.playback_analytics IS 'Playback analytics for track listening events';
|