-- 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: MarkSoundtracksDeletedExcept :exec UPDATE soundtrack SET deleted=now() WHERE deleted IS NULL AND NOT (id = ANY(sqlc.arg(ids)::int[])); -- name: SetSoundtrackFingerprint :exec UPDATE soundtrack SET fingerprint=sqlc.arg(fingerprint) WHERE id=sqlc.arg(id); -- 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, uuid) VALUES ($1, $2, $3, now(), $4) returning id, uuid; -- 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; -- name: GetSoundtrackByUUID :one SELECT * FROM soundtrack WHERE uuid = $1 AND deleted IS NULL; -- name: GetSoundtrackUUIDById :one SELECT uuid FROM soundtrack WHERE id = $1; -- name: AddSoundtrackPlayedByUUID :exec UPDATE soundtrack SET times_played = times_played + 1, last_played = now() WHERE uuid = $1; -- name: SetAlternativeNames :one -- Replaces the alternative names. A soundtrack without a cover is searched again with them. UPDATE soundtrack SET alternative_names = sqlc.arg(names)::text[], cover_checked = CASE WHEN cover_file IS NULL THEN NULL ELSE cover_checked END WHERE uuid = sqlc.arg(uuid) AND deleted IS NULL RETURNING *; -- name: ListSoundtracksNeedingCover :many -- Active soundtracks without a cover that the job has not searched since checked_before. SELECT uuid, soundtrack_name, alternative_names FROM soundtrack WHERE deleted IS NULL AND cover_file IS NULL AND NOT cover_manual AND (cover_checked IS NULL OR cover_checked < sqlc.arg(checked_before)) ORDER BY soundtrack_name; -- name: SetCover :exec UPDATE soundtrack SET cover_file = sqlc.arg(file), cover_source = sqlc.arg(source), cover_external_id = sqlc.arg(external_id), cover_manual = sqlc.arg(manual), cover_modified = now(), cover_checked = now() WHERE uuid = sqlc.arg(uuid); -- name: MarkCoverChecked :exec UPDATE soundtrack SET cover_checked = now() WHERE uuid = $1; -- name: ClearCover :exec -- Removes the cover, so the job searches for one again. UPDATE soundtrack SET cover_file = NULL, cover_source = NULL, cover_external_id = NULL, cover_manual = false, cover_modified = NULL, cover_checked = NULL WHERE uuid = $1; -- name: ListCoverFiles :many SELECT cover_file::text FROM soundtrack WHERE cover_file IS NOT NULL;