feat(go-services): inventory-go /search/items — query+filters+count (validated)
Ports the search CTE (items_with_slots: combat/req/enh joins + the rating extractions from item_raw_data.int_values JSONB via GREATEST/COALESCE, coverage mask, computed_spell_names), the SQL filters, sort mapping, pagination, and the DISTINCT count query. Returns each row's direct DB columns + computed booleans (is_equipped/bonded/attuned/rare, condition_percent). Validated vs the Python service on the production DB: total_count EXACT across 13 filter combinations (armor/jewelry/min_armor/min_damage/text/material/ min_value/is_rare/rating/equipped/character/workmanship), and 50-row alignment with 0 direct-column mismatches (same SQL sort order, same rows). Deferred to later slices: deep per-row enrichment (extract_item_properties: material_name/spells/slot_name/object_class_name/...), and the enum-dependent filters (has_spell/spell_contains/legendary_cantrips, slot_names, item_set, weapon_type, underwear). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
253250a01d
commit
7e7842128e
2 changed files with 394 additions and 0 deletions
|
|
@ -70,6 +70,7 @@ func main() {
|
|||
mux.HandleFunc("GET /health", srv.handleHealth)
|
||||
mux.HandleFunc("GET /sets/list", srv.handleSetsList)
|
||||
mux.HandleFunc("GET /characters/list", srv.handleCharactersList)
|
||||
mux.HandleFunc("GET /search/items", srv.handleSearchItems)
|
||||
|
||||
httpSrv := &http.Server{Addr: addr, Handler: withLogging(mux), ReadHeaderTimeout: 10 * time.Second}
|
||||
go func() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue