bvandeusen
8cdaf8f0f1
feat(auth): RequireUser middleware (cookie or bearer)
...
Resolves /api/* callers from session cookie first, Authorization
bearer second. Touches last_seen on success for future active-
sessions UI. Adds GetUserByID query used by the middleware.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-04-20 20:53:11 -04:00
bvandeusen
c8a4a930ea
feat(dbq): generate session queries
...
Adds Insert/Get/Touch/Delete helpers over the sessions table.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-04-20 20:16:48 -04:00
bvandeusen
1741b57a0b
feat(db): add sessions table for /api/* auth
...
Stores sha256(token) plus user_agent + last_seen_at so future
active-sessions UI doesn't need another migration.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-04-20 19:37:26 -04:00
bvandeusen
f8249a12ac
sqlc generate for CountTracksByAlbum and SearchTracks ( #295 )
2026-04-19 19:03:59 +00:00
bvandeusen
f3a80347c1
sqlc generate for SearchArtists ( #295 )
2026-04-19 19:03:30 +00:00
bvandeusen
319ef06a4f
sqlc generate for album browse queries ( #295 )
2026-04-19 19:03:10 +00:00
bvandeusen
acd2c7f034
sqlc: add CountTracksByAlbum and SearchTracks for Subsonic browse ( #295 )
...
CountTracksByAlbum drives the songCount attr on AlbumRef; SearchTracks
backs the song facet of search3.
2026-04-19 19:02:27 +00:00
bvandeusen
97eb91f50b
sqlc: add SearchArtists for Subsonic search3 ( #295 )
2026-04-19 19:02:14 +00:00
bvandeusen
a498d20021
sqlc: add album listing/search queries for Subsonic browse ( #295 )
...
Adds ListAlbumsAlphaByName, ListAlbumsAlphaByArtist (with sqlc.embed
for the joined artist sort_name), ListAlbumsNewest, ListAlbumsRandom,
ListAlbumsByGenre, and SearchAlbums. Powers getAlbumList2 type filters
and the album facet of search3.
2026-04-19 19:02:03 +00:00
bvandeusen
f916cde8c8
chore(sqlc): regenerate models.go for subsonic_password
2026-04-19 17:37:40 +00:00
bvandeusen
2d153e1e9a
chore(sqlc): regenerate users.sql.go for subsonic_password
2026-04-19 17:37:32 +00:00
bvandeusen
bc22ec9a91
feat(db): add SetSubsonicPassword query
...
Allows setting or clearing the opt-in Subsonic legacy credential.
2026-04-19 17:37:18 +00:00
bvandeusen
b5bf0cc9d6
feat(db): migration 0003 down — drop users.subsonic_password
2026-04-19 17:37:12 +00:00
bvandeusen
9fd3fec149
feat(db): migration 0003 - users.subsonic_password opt-in column
...
Subsonic token auth (t=md5(password+salt)) needs a reversibly stored
credential; bcrypt password_hash can't serve. NULL means the user has
not opted in, forcing apiKey (OpenSubsonic) instead.
2026-04-19 17:37:11 +00:00
bvandeusen
e3257a705a
M1/#293: regenerate sqlc output for GetAlbumByArtistAndTitle
2026-04-19 15:15:50 +00:00
bvandeusen
918506168a
M1/#293: add GetAlbumByArtistAndTitle for no-mbid dedupe
2026-04-19 15:15:35 +00:00
bvandeusen
9e59a0cf73
M1/#292: sqlc-generated users queries
2026-04-19 02:32:31 +00:00
bvandeusen
451971a9bd
M1/#292: sqlc-generated tracks queries
2026-04-19 02:32:24 +00:00
bvandeusen
da23c62262
M1/#292: sqlc-generated albums queries
2026-04-19 02:32:08 +00:00
bvandeusen
0377c58513
M1/#292: sqlc-generated artists queries
2026-04-19 02:31:58 +00:00
bvandeusen
2c10d4e23a
M1/#292: sqlc-generated models (Album/Artist/Track/User)
2026-04-19 02:31:49 +00:00
bvandeusen
e0baeb2980
M1/#292: sqlc-generated DBTX + Queries
2026-04-19 02:31:43 +00:00
bvandeusen
34ae7d6cde
M1/#292: user queries (create + lookup by username/token + count)
2026-04-19 02:31:39 +00:00
bvandeusen
85673f9881
M1/#292: track queries (upsert-by-file_path/get-by-id/get-by-path/list-by-album)
2026-04-19 02:31:36 +00:00
bvandeusen
58b29cc4bd
M1/#292: album queries (upsert/get/list-by-artist)
2026-04-19 02:31:31 +00:00
bvandeusen
7c46d8358f
M1/#292: artist queries (upsert/get/list)
2026-04-19 02:31:27 +00:00
bvandeusen
a243357ce6
M1/#292: down migration for core library
2026-04-19 02:31:23 +00:00
bvandeusen
75733a0f7f
M1/#292: core library migration (artists/albums/tracks/users)
2026-04-19 02:31:21 +00:00
bvandeusen
79cd25b24a
M1/#291: drop goose-style stub migration (replaced by 0001_init.*)
2026-04-19 01:35:23 +00:00
bvandeusen
08a627b10b
M1/#291: placeholder down migration
2026-04-19 01:12:39 +00:00
bvandeusen
ceb0161677
M1/#291: placeholder up migration to establish runner
2026-04-19 01:12:37 +00:00
bvandeusen
9c66736916
M1/#291: env-gated migration test against real postgres
2026-04-19 01:12:12 +00:00
bvandeusen
380a76c053
M1/#291: wire pgxpool + golang-migrate runner with embedded migrations
2026-04-19 01:12:02 +00:00
bvandeusen
ff7cd8d38b
feat(skel): placeholder migration so embed.FS has a file to index
2026-04-18 21:20:45 +00:00
bvandeusen
9b9e0e4011
test(db): verify migrations stub loads embedded files and returns ErrNotConfigured
2026-04-18 21:20:40 +00:00
bvandeusen
58fa790b2b
feat(skel): db package with embedded migrations stub
...
Establishes the embed.FS and migrations/ layout up front. Migrate()
returns ErrNotConfigured intentionally — the real goose runner lands in
M2 alongside Postgres work, avoiding a toolchain bump to Go 1.24/1.25
through goose's transitive modernc.org/libc dependency chain.
2026-04-18 21:20:34 +00:00