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