TODO: soft-deletion - GetXyzByID should include `ErrItemIsDeleted` if item is soft-deleted IDEA: migrations-table - Store migrations in a table. This makes the schema more self-documenting. - Possible schema: name, sql_up, sql_down, hash (computed from those fields plus previous migration hash) - or just rowid instead of hash? Migration sequence should be immutable after publishing, so there should never be "conflicts" TODO: language-server-for-TODO.txt TODO: auto-migration-checker - Use `pkg/schema` to test whether a base schema plus a migration equals a new schema TODO: codegen SaveXyz update path doesn't check foreign keys - Insert path has FK error handling, but the update path wraps everything in Must - An update that violates an FK constraint will panic instead of returning an error TODO: generated test file inclues global test DB setup, which is wrong TODO: join-tables - handle codegen for without rowid tables properly - add "get all X for Y" - Example: `chat_pinned_messages` TODO: consider CreateDB and CreateMemoryDB TODO: generate tests for the remaining CRUD, try to hit ~100% default test coverage TODO: test reporter - coverage: https://x.com/wispem_wantex/status/2009799380648505563 - Jest shows for each file: % of lines, functions, branches and statements covered - Go reporter should show: - group coverage stats by either function, file or package - count by statements, branches or functions - Show both raw count and percentage - list which lines / branches / functions were missed - pretty (terminal) format or JSON format TODO: foreign key to compound-FK table - sample: booru_post_tag_votes TODO: crap score TODO: MakeSaveItem() fixture factory TODO: better schema parsing with less weird views - omp --resume 01a0ef0b-9452-7000-a63a-6d5cabf07646 TODO: sqlite row-level locking - https://chatgpt.com/c/6ace6870-bf10-83e8-8e0c-98569ae9303f TODO: `ops/gas_init_test.sh` "gas generate item_to_item --test"