Just made my FuzeDBI library work with SQLite as well as Postgres. the SQLite version is sloppy as hell but it works.
basically it lets you do shit like this, and have it work for multiple DB engines:
for (auto permission_collection_tuple : fuze_dbi->queryRows<std::tuple<int, std::optional<int>, std::optional<int>>>("SELECT id, account_id, permission_group_id FROM permission_collection WHERE permission_object_id = $1", this->id)) {
for (auto permission_setting_tuple : fuze_dbi->queryRows<std::tuple<int, int, int>>("SELECT id, permission_number, setting FROM permission_setting WHERE permission_collection_id = $1", new_permission_collection.getId())) {
}
}
fuze_dbi->query<void>("INSERT INTO permission_group_heirarchy(rank, permission_group) VALUES ($1, $2)", rank, this->ordered_groups[rank])
It's a more lightweight/less abstracted way of managing data compared to an ORM.