feat: add Web UI artist detail, archive, and ignore actions

Implements Task 8: artist detail page (local albums + found-missing
with ignore buttons), ignored-releases archive with restore, and POST
handlers toggling ignore flags and ignore_singles. Adds ErrArtistNotFound
sentinel so callers can distinguish missing artists, and wires routes via
the enhanced ServeMux path wildcard.
This commit is contained in:
2026-07-19 22:43:47 +03:00
parent cea20957e7
commit 44f3b0a2a7
11 changed files with 682 additions and 13 deletions

View File

@@ -2,6 +2,7 @@ package database
import (
"database/sql"
"errors"
"fmt"
"time"
@@ -13,6 +14,11 @@ type DB struct {
conn *sql.DB
}
// ErrArtistNotFound is returned by artist lookups when no row matches the given
// ID. It is a sentinel so callers (e.g. the web UI) can distinguish "missing"
// from other errors.
var ErrArtistNotFound = errors.New("artist not found")
// New opens a SQLite database at dbPath and runs schema migrations.
func New(dbPath string) (*DB, error) {
// The _foreign_keys=on DSN parameter enables foreign key enforcement on