Implement DAO
Before Starting
Search for similar DAOs first:
- •Search for existing
.sqfiles and DAO implementations indomain/ - •Look at how similar DAOs handle transactions, errors, and Flow emissions
- •Check existing fakes for in-memory storage patterns
For SQLDelight-specific questions, consult external SQLDelight documentation.
Steps
- •Add
.sqfile in module'ssqldelight/directory - •Create interface and implementation in
:implmodule - •Add
@BitkeyInject(AppScope::class)to implementation - •Create fake in
:fakemodule with in-memory storage andreset()
Rules
- •Interface and impl both in
:impl(DAOs are never in:public) - •All operations return
Result<T, DbError>orFlow<T> - •Write operations use
awaitTransactionWithResult() - •Fakes use in-memory collections with
reset()for test isolation - •DAOs consumed by services only, never by UI/state machines
References
@docs/docs/mobile/architecture/conventions.md @docs/docs/mobile/architecture/data-access-object.md @docs/docs/mobile/architecture/dependency-injection.md