#include "PgDatabaseSizes.h" #include "Pgsql_Result.h" PgDatabaseSizes loadDatabaseSizes(Pgsql::Connection &connection) { std::string q = "SELECT pg_database.oid, " " case when has_database_privilege(current_role, pg_database.oid, \n" " 'connect') then pg_database_size(pg_database.oid) else -1 end \n" "FROM pg_database"; Pgsql::Result sizesResult = connection.query(q.c_str()); PgDatabaseSizes result; result.reserve(sizesResult.rows()); for (auto& row : sizesResult) { PgDatabaseSize ds; ds.oid = row.get(0); ds.totalBytes = row.get(1); result.push_back(ds); } return result; }