Skip to content

feat: introduce Data Access Object - #1736

Closed
ethicnology wants to merge 7 commits into
developfrom
introduce-data-access-object
Closed

feat: introduce Data Access Object#1736
ethicnology wants to merge 7 commits into
developfrom
introduce-data-access-object

Conversation

@ethicnology

Copy link
Copy Markdown
Member

⚠️ This refactoring should not be included in 6.5.0

This design pattern is used to abstract and encapsulate all access to the database by extracting queries into classes that are available from your main database class.

This will also simplify our life if one day we have to replace drift, since these classes have to be injected.

Currently we have one DAO per table, but we can design more complex DAO accessing multiple tables in the future.

The next step will be to replace 73 direct database accesses across 13 datasources

Datasource Queries to Replace DAO to Use
settings_datasource.dart into().insert, managers.settings.filter().getSingle, 10x managers.settings.update SettingsDao
wallet_metadata_datasource.dart into().insertOnConflictUpdate, managers.walletMetadatas.filter().getSingleOrNull, managers.walletMetadatas.get(), managers.walletMetadatas.filter().delete() WalletMetadatasDao
label_datasource.dart managers.labels.create, batch(), 2x managers.labels.filter().get(), 3x managers.labels.filter().delete(), managers.labels.get(), selectOnly(), delete().go() LabelsDao
boltz_storage_datasource.dart 3x into().insertOnConflictUpdate, 2x select().where().getSingle, managers.swaps.filter().getSingleOrNull, managers.swaps.filter().get(), managers.swaps.filter().delete() SwapsDao, AutoSwapDao
local_payjoin_datasource.dart 2x into().insertOnConflictUpdate, 2x managers.filter().getSingleOrNull, 4x managers.filter().get() PayjoinSendersDao, PayjoinReceiversDao
electrum_server_storage_datasource.dart into().insertOnConflictUpdate, batch(), 4x managers.electrumServers.filter().get(), managers.electrumServers.filter().delete() ElectrumServersDao
electrum_settings_storage_datasource.dart into().insertOnConflictUpdate, managers.electrumSettings.get(), 2x managers.electrumSettings.filter().get/getSingle() ElectrumSettingsDao
electrum_remote_datasource.dart managers.transactions.filter().getSingleOrNull, into().insert TransactionsDao
mempool_server_storage_datasource.dart into().insertOnConflictUpdate, managers.mempoolServers.filter().getSingleOrNull, managers.mempoolServers.filter().delete() MempoolServersDao
mempool_settings_storage_datasource.dart into().insertOnConflictUpdate, managers.mempoolSettings.filter().getSingleOrNull MempoolSettingsDao
bip85_datasource.dart managers.bip85Derivations.create, 3x managers.bip85Derivations.filter().get/getSingleOrNull, 3x managers.bip85Derivations.filter().update Bip85DerivationsDao
recoverbull_settings_datasource.dart into().insertOnConflictUpdate, 2x managers.recoverbull.filter().getSingle, managers.recoverbull.update RecoverbullDao
price_local_datasource.dart batch(), select().where(), 2x delete().where() PricesDao

@ethicnology ethicnology self-assigned this Jan 6, 2026
@ethicnology
ethicnology force-pushed the introduce-data-access-object branch from 358b95d to f4dd9f3 Compare January 7, 2026 19:02
@ethicnology

Copy link
Copy Markdown
Member Author

DAO are not as useful as expected in the planned Architecture where each feature is encapsuling database calls

@ethicnology ethicnology closed this Jan 8, 2026
@thibistaken
thibistaken deleted the introduce-data-access-object branch March 19, 2026 08:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant