feat: Rename game to soundtrack throughout codebase
- Database migration: rename game table to soundtrack - Rename game_name to soundtrack_name, game_id to soundtrack_id - Update all SQL queries in soundtrack.sql, song.sql, song_list.sql, statistics.sql - Regenerate sqlc code (soundtrack.sql.go, song.sql.go, etc.) - Update backend: music.go, sync.go, statistics.go - Update server: musicHandler.go, syncHandler.go, routes.go - Update frontend: hello.go - Keep URL paths as /games for backward compatibility Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
@@ -1,49 +0,0 @@
|
||||
-- name: ResetGameIdSeq :one
|
||||
SELECT setval('game_id_seq', (SELECT MAX(id) FROM game)+1);
|
||||
|
||||
-- name: GetGameNameById :one
|
||||
SELECT game_name FROM game WHERE id = $1;
|
||||
|
||||
-- name: GetGameById :one
|
||||
SELECT *
|
||||
FROM game
|
||||
WHERE id = $1
|
||||
AND deleted IS NULL;
|
||||
|
||||
-- name: SetGameDeletionDate :exec
|
||||
UPDATE game SET deleted=now() WHERE deleted IS NULL;
|
||||
|
||||
-- name: ClearGames :exec
|
||||
DELETE FROM game;
|
||||
|
||||
-- name: UpdateGameName :exec
|
||||
UPDATE game SET game_name=sqlc.arg(name), path=sqlc.arg(path), last_changed=now() WHERE id=sqlc.arg(id);
|
||||
|
||||
-- name: UpdateGameHash :exec
|
||||
UPDATE game SET hash=sqlc.arg(hash), last_changed=now() WHERE id=sqlc.arg(id);
|
||||
|
||||
-- name: RemoveDeletionDate :exec
|
||||
UPDATE game SET deleted=NULL WHERE id=$1;
|
||||
|
||||
-- name: GetIdByGameName :one
|
||||
SELECT id FROM game WHERE game_name = $1;
|
||||
|
||||
-- name: InsertGame :one
|
||||
INSERT INTO game (game_name, path, hash, added) VALUES ($1, $2, $3, now()) returning id;
|
||||
|
||||
-- name: InsertGameWithExistingId :exec
|
||||
INSERT INTO game (id, game_name, path, hash, added) VALUES ($1, $2, $3, $4, now());
|
||||
|
||||
-- name: FindAllGames :many
|
||||
SELECT *
|
||||
FROM game
|
||||
WHERE deleted IS NULL
|
||||
ORDER BY game_name;
|
||||
|
||||
-- name: GetAllGamesIncludingDeleted :many
|
||||
SELECT *
|
||||
FROM game
|
||||
ORDER BY game_name;
|
||||
|
||||
-- name: AddGamePlayed :exec
|
||||
UPDATE game SET times_played = times_played + 1, last_played = now() WHERE id = $1;
|
||||
@@ -1,11 +1,11 @@
|
||||
-- name: ClearSongs :exec
|
||||
DELETE FROM song;
|
||||
|
||||
-- name: ClearSongsByGameId :exec
|
||||
DELETE FROM song WHERE game_id = $1;
|
||||
-- name: ClearSongsBySoundtrackId :exec
|
||||
DELETE FROM song WHERE soundtrack_id = $1;
|
||||
|
||||
-- name: AddSong :exec
|
||||
INSERT INTO song(game_id, song_name, path, file_name, hash) VALUES ($1, $2, $3, $4, $5);
|
||||
INSERT INTO song(soundtrack_id, song_name, path, file_name, hash) VALUES ($1, $2, $3, $4, $5);
|
||||
|
||||
-- name: CheckSong :one
|
||||
SELECT COUNT(*) FROM song WHERE path = $1;
|
||||
@@ -22,14 +22,14 @@ UPDATE song SET song_name=$1, file_name=$2, path=$3 where hash=$4;
|
||||
-- name: AddHashToSong :exec
|
||||
UPDATE song SET hash=$1 where path=$2;
|
||||
|
||||
-- name: FindSongsFromGame :many
|
||||
-- name: FindSongsFromSoundtrack :many
|
||||
SELECT *
|
||||
FROM song
|
||||
WHERE game_id = $1;
|
||||
WHERE soundtrack_id = $1;
|
||||
|
||||
-- name: AddSongPlayed :exec
|
||||
UPDATE song SET times_played = times_played + 1
|
||||
WHERE game_id = $1 AND song_name = $2;
|
||||
WHERE soundtrack_id = $1 AND song_name = $2;
|
||||
|
||||
-- name: FetchAllSongs :many
|
||||
SELECT * FROM song;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
-- name: InsertSongInList :exec
|
||||
INSERT INTO song_list (match_date, match_id, song_no, game_name, song_name)
|
||||
INSERT INTO song_list (match_date, match_id, song_no, soundtrack_name, song_name)
|
||||
VALUES ($1, $2, $3, $4, $5);
|
||||
|
||||
-- name: GetSongList :many
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
-- name: ResetSoundtrackIdSeq :one
|
||||
SELECT setval('soundtrack_id_seq', (SELECT MAX(id) FROM soundtrack)+1);
|
||||
|
||||
-- name: GetSoundtrackNameById :one
|
||||
SELECT soundtrack_name FROM soundtrack WHERE id = $1;
|
||||
|
||||
-- name: GetSoundtrackById :one
|
||||
SELECT *
|
||||
FROM soundtrack
|
||||
WHERE id = $1
|
||||
AND deleted IS NULL;
|
||||
|
||||
-- name: SetSoundtrackDeletionDate :exec
|
||||
UPDATE soundtrack SET deleted=now() WHERE deleted IS NULL;
|
||||
|
||||
-- name: ClearSoundtracks :exec
|
||||
DELETE FROM soundtrack;
|
||||
|
||||
-- name: UpdateSoundtrackName :exec
|
||||
UPDATE soundtrack SET soundtrack_name=sqlc.arg(name), path=sqlc.arg(path), last_changed=now() WHERE id=sqlc.arg(id);
|
||||
|
||||
-- name: UpdateSoundtrackHash :exec
|
||||
UPDATE soundtrack SET hash=sqlc.arg(hash), last_changed=now() WHERE id=sqlc.arg(id);
|
||||
|
||||
-- name: RemoveSoundtrackDeletionDate :exec
|
||||
UPDATE soundtrack SET deleted=NULL WHERE id=$1;
|
||||
|
||||
-- name: GetIdBySoundtrackName :one
|
||||
SELECT id FROM soundtrack WHERE soundtrack_name = $1;
|
||||
|
||||
-- name: InsertSoundtrack :one
|
||||
INSERT INTO soundtrack (soundtrack_name, path, hash, added) VALUES ($1, $2, $3, now()) returning id;
|
||||
|
||||
-- name: InsertSoundtrackWithExistingId :exec
|
||||
INSERT INTO soundtrack (id, soundtrack_name, path, hash, added) VALUES ($1, $2, $3, $4, now());
|
||||
|
||||
-- name: FindAllSoundtracks :many
|
||||
SELECT *
|
||||
FROM soundtrack
|
||||
WHERE deleted IS NULL
|
||||
ORDER BY soundtrack_name;
|
||||
|
||||
-- name: GetAllSoundtracksIncludingDeleted :many
|
||||
SELECT *
|
||||
FROM soundtrack
|
||||
ORDER BY soundtrack_name;
|
||||
|
||||
-- name: AddSoundtrackPlayed :exec
|
||||
UPDATE soundtrack SET times_played = times_played + 1, last_played = now() WHERE id = $1;
|
||||
@@ -1,10 +1,10 @@
|
||||
-- Most played games with their songs
|
||||
-- Most played soundtracks with their songs
|
||||
-- name: GetMostPlayedGamesWithSongs :many
|
||||
SELECT
|
||||
g.id as game_id,
|
||||
g.game_name,
|
||||
g.times_played as game_played,
|
||||
g.last_played as game_last_played,
|
||||
g.id as soundtrack_id,
|
||||
g.soundtrack_name,
|
||||
g.times_played as soundtrack_played,
|
||||
g.last_played as soundtrack_last_played,
|
||||
json_agg(
|
||||
json_build_object(
|
||||
'song_name', s.song_name,
|
||||
@@ -13,20 +13,20 @@ SELECT
|
||||
'file_name', s.file_name
|
||||
)
|
||||
) as songs
|
||||
FROM game g
|
||||
LEFT JOIN song s ON g.id = s.game_id
|
||||
FROM soundtrack g
|
||||
LEFT JOIN song s ON g.id = s.soundtrack_id
|
||||
WHERE g.deleted IS NULL
|
||||
GROUP BY g.id, g.game_name, g.times_played, g.last_played
|
||||
ORDER BY g.times_played DESC, g.game_name
|
||||
GROUP BY g.id, g.soundtrack_name, g.times_played, g.last_played
|
||||
ORDER BY g.times_played DESC, g.soundtrack_name
|
||||
LIMIT $1;
|
||||
|
||||
-- Least played games with their songs
|
||||
-- Least played soundtracks with their songs
|
||||
-- name: GetLeastPlayedGamesWithSongs :many
|
||||
SELECT
|
||||
g.id as game_id,
|
||||
g.game_name,
|
||||
g.times_played as game_played,
|
||||
g.last_played as game_last_played,
|
||||
g.id as soundtrack_id,
|
||||
g.soundtrack_name,
|
||||
g.times_played as soundtrack_played,
|
||||
g.last_played as soundtrack_last_played,
|
||||
json_agg(
|
||||
json_build_object(
|
||||
'song_name', s.song_name,
|
||||
@@ -35,39 +35,39 @@ SELECT
|
||||
'file_name', s.file_name
|
||||
)
|
||||
) as songs
|
||||
FROM game g
|
||||
LEFT JOIN song s ON g.id = s.game_id
|
||||
FROM soundtrack g
|
||||
LEFT JOIN song s ON g.id = s.soundtrack_id
|
||||
WHERE g.deleted IS NULL
|
||||
GROUP BY g.id, g.game_name, g.times_played, g.last_played
|
||||
ORDER BY g.times_played ASC, g.game_name
|
||||
GROUP BY g.id, g.soundtrack_name, g.times_played, g.last_played
|
||||
ORDER BY g.times_played ASC, g.soundtrack_name
|
||||
LIMIT $1;
|
||||
|
||||
-- Most played songs with their game info
|
||||
-- Most played songs with their soundtrack info
|
||||
-- name: GetMostPlayedSongsWithGame :many
|
||||
SELECT
|
||||
s.game_id as game_id,
|
||||
g.game_name,
|
||||
s.soundtrack_id as soundtrack_id,
|
||||
g.soundtrack_name,
|
||||
s.song_name,
|
||||
s.path,
|
||||
s.times_played,
|
||||
s.file_name
|
||||
FROM song s
|
||||
JOIN game g ON s.game_id = g.id
|
||||
JOIN soundtrack g ON s.soundtrack_id = g.id
|
||||
WHERE g.deleted IS NULL
|
||||
ORDER BY s.times_played DESC, s.song_name
|
||||
LIMIT $1;
|
||||
|
||||
-- Least played songs with their game info
|
||||
-- Least played songs with their soundtrack info
|
||||
-- name: GetLeastPlayedSongsWithGame :many
|
||||
SELECT
|
||||
s.game_id as game_id,
|
||||
g.game_name,
|
||||
s.soundtrack_id as soundtrack_id,
|
||||
g.soundtrack_name,
|
||||
s.song_name,
|
||||
s.path,
|
||||
s.times_played,
|
||||
s.file_name
|
||||
FROM song s
|
||||
JOIN game g ON s.game_id = g.id
|
||||
JOIN soundtrack g ON s.soundtrack_id = g.id
|
||||
WHERE g.deleted IS NULL
|
||||
ORDER BY s.times_played ASC, s.song_name
|
||||
LIMIT $1;
|
||||
@@ -75,9 +75,9 @@ LIMIT $1;
|
||||
-- Games that have never been played (times_played = 0)
|
||||
-- name: GetNeverPlayedGames :many
|
||||
SELECT
|
||||
g.id as game_id,
|
||||
g.game_name,
|
||||
g.times_played as game_played,
|
||||
g.id as soundtrack_id,
|
||||
g.soundtrack_name,
|
||||
g.times_played as soundtrack_played,
|
||||
g.added,
|
||||
json_agg(
|
||||
json_build_object(
|
||||
@@ -86,19 +86,19 @@ SELECT
|
||||
'times_played', s.times_played
|
||||
)
|
||||
) as songs
|
||||
FROM game g
|
||||
LEFT JOIN song s ON g.id = s.game_id
|
||||
FROM soundtrack g
|
||||
LEFT JOIN song s ON g.id = s.soundtrack_id
|
||||
WHERE g.deleted IS NULL AND g.times_played = 0
|
||||
GROUP BY g.id, g.game_name, g.times_played, g.added
|
||||
ORDER BY g.game_name;
|
||||
GROUP BY g.id, g.soundtrack_name, g.times_played, g.added
|
||||
ORDER BY g.soundtrack_name;
|
||||
|
||||
-- Last played games (most recently played)
|
||||
-- Last played soundtracks (most recently played)
|
||||
-- name: GetLastPlayedGames :many
|
||||
SELECT
|
||||
g.id as game_id,
|
||||
g.game_name,
|
||||
g.times_played as game_played,
|
||||
g.last_played as game_last_played,
|
||||
g.id as soundtrack_id,
|
||||
g.soundtrack_name,
|
||||
g.times_played as soundtrack_played,
|
||||
g.last_played as soundtrack_last_played,
|
||||
json_agg(
|
||||
json_build_object(
|
||||
'song_name', s.song_name,
|
||||
@@ -106,20 +106,20 @@ SELECT
|
||||
'times_played', s.times_played
|
||||
)
|
||||
) as songs
|
||||
FROM game g
|
||||
LEFT JOIN song s ON g.id = s.game_id
|
||||
FROM soundtrack g
|
||||
LEFT JOIN song s ON g.id = s.soundtrack_id
|
||||
WHERE g.deleted IS NULL AND g.last_played IS NOT NULL
|
||||
GROUP BY g.id, g.game_name, g.times_played, g.last_played
|
||||
GROUP BY g.id, g.soundtrack_name, g.times_played, g.last_played
|
||||
ORDER BY g.last_played DESC
|
||||
LIMIT $1;
|
||||
|
||||
-- Oldest played games (least recently played, but has been played at least once)
|
||||
-- Oldest played soundtracks (least recently played, but has been played at least once)
|
||||
-- name: GetOldestPlayedGames :many
|
||||
SELECT
|
||||
g.id as game_id,
|
||||
g.game_name,
|
||||
g.times_played as game_played,
|
||||
g.last_played as game_last_played,
|
||||
g.id as soundtrack_id,
|
||||
g.soundtrack_name,
|
||||
g.times_played as soundtrack_played,
|
||||
g.last_played as soundtrack_last_played,
|
||||
json_agg(
|
||||
json_build_object(
|
||||
'song_name', s.song_name,
|
||||
@@ -127,22 +127,22 @@ SELECT
|
||||
'times_played', s.times_played
|
||||
)
|
||||
) as songs
|
||||
FROM game g
|
||||
LEFT JOIN song s ON g.id = s.game_id
|
||||
FROM soundtrack g
|
||||
LEFT JOIN song s ON g.id = s.soundtrack_id
|
||||
WHERE g.deleted IS NULL AND g.last_played IS NOT NULL
|
||||
GROUP BY g.id, g.game_name, g.times_played, g.last_played
|
||||
GROUP BY g.id, g.soundtrack_name, g.times_played, g.last_played
|
||||
ORDER BY g.last_played ASC
|
||||
LIMIT $1;
|
||||
|
||||
-- Get statistics summary
|
||||
-- name: GetStatisticsSummary :one
|
||||
SELECT
|
||||
COUNT(*) as total_games,
|
||||
SUM(CASE WHEN times_played > 0 THEN 1 ELSE 0 END) as played_games,
|
||||
SUM(CASE WHEN times_played = 0 THEN 1 ELSE 0 END) as never_played_games,
|
||||
COALESCE(SUM(times_played), 0)::bigint as total_game_plays,
|
||||
COALESCE(AVG(times_played), 0)::float as avg_game_plays,
|
||||
COALESCE(MAX(times_played), 0)::bigint as max_game_plays,
|
||||
COALESCE(MIN(times_played), 0)::bigint as min_game_plays
|
||||
FROM game
|
||||
COUNT(*) as total_soundtracks,
|
||||
SUM(CASE WHEN times_played > 0 THEN 1 ELSE 0 END) as played_soundtracks,
|
||||
SUM(CASE WHEN times_played = 0 THEN 1 ELSE 0 END) as never_played_soundtracks,
|
||||
COALESCE(SUM(times_played), 0)::bigint as total_soundtrack_plays,
|
||||
COALESCE(AVG(times_played), 0)::float as avg_soundtrack_plays,
|
||||
COALESCE(MAX(times_played), 0)::bigint as max_soundtrack_plays,
|
||||
COALESCE(MIN(times_played), 0)::bigint as min_soundtrack_plays
|
||||
FROM soundtrack
|
||||
WHERE deleted IS NULL;
|
||||
|
||||
Reference in New Issue
Block a user