Metrics are served on METRICS_PORT (default 2112, "off" to disable), never on the public port. Besides the Go runtime and process metrics this adds: - http_requests_total and http_request_duration_seconds per route pattern, from an Echo middleware. - musicserver_songs_requested_total and musicserver_songs_played_total by pick mode (random, low, classic). The mode is now stored with each queued song (migration 000006, not released yet). - Library size, sync duration, last successful sync, broken songs from the last full sync, and the database connection pool. Refs #35, #36, #37 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
30 lines
1.2 KiB
SQL
30 lines
1.2 KiB
SQL
-- Cheap fingerprint (file names, sizes and modification times) used to skip
|
|
-- content hashing of soundtracks that have not changed since the last sync.
|
|
ALTER TABLE soundtrack ADD COLUMN fingerprint TEXT NOT NULL DEFAULT '';
|
|
|
|
-- Play queues. Every client has its own queue, identified by the queue's UUID.
|
|
-- Ended queues are kept as history.
|
|
CREATE TABLE queue (
|
|
uuid UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
current_song INT4 NOT NULL DEFAULT -1,
|
|
-- The last random song, added to the queue by /music/addQue, and how it was picked.
|
|
last_fetched_song_uuid UUID NULL,
|
|
last_fetched_mode VARCHAR(10) NULL,
|
|
started_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
ended_at TIMESTAMPTZ NULL
|
|
);
|
|
CREATE INDEX idx_queue_active ON queue(uuid) WHERE ended_at IS NULL;
|
|
|
|
-- song_uuid has no foreign key: a sync can delete songs. The names are kept for the history.
|
|
CREATE TABLE queue_song (
|
|
queue_uuid UUID NOT NULL REFERENCES queue(uuid) ON DELETE CASCADE,
|
|
song_no INT4 NOT NULL,
|
|
song_uuid UUID NOT NULL,
|
|
soundtrack_name VARCHAR NOT NULL,
|
|
song_name VARCHAR NOT NULL,
|
|
-- How the song was picked: random, low or classic.
|
|
mode VARCHAR(10) NOT NULL,
|
|
added_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
PRIMARY KEY (queue_uuid, song_no)
|
|
);
|