25 lines
613 B
C++
25 lines
613 B
C++
#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;
|
|
}
|