pgLab/pglab/PgDatabaseCatalogue.h

52 lines
1.4 KiB
C++

#ifndef PGSQLDATABASECATALOGUE_H
#define PGSQLDATABASECATALOGUE_H
#include <libpq-fe.h>
#include <QString>
#include <memory>
#include <vector>
namespace Pgsql {
class Connection;
}
class PgTypeContainer;
class PgDatabaseContainer;
class PgAuthIdContainer;
class PgDatabaseCatalogue: public std::enable_shared_from_this<PgDatabaseCatalogue> {
public:
PgDatabaseCatalogue();
PgDatabaseCatalogue(const PgDatabaseCatalogue&) = delete;
PgDatabaseCatalogue& operator = (const PgDatabaseCatalogue&) = delete;
~PgDatabaseCatalogue();
void loadAll(Pgsql::Connection &conn);
void loadInfo(Pgsql::Connection &conn);
void loadTypes(Pgsql::Connection &conn);
void loadDatabases(Pgsql::Connection &conn);
void loadAuthIds(Pgsql::Connection &conn);
const QString& serverVersionString() const;
int serverVersion() const;
std::shared_ptr<const PgTypeContainer> types() const;
std::shared_ptr<const PgDatabaseContainer> databases() const;
std::shared_ptr<const PgAuthIdContainer> authIds() const;
private:
QString m_serverVersionString;
int m_serverVersion;
std::shared_ptr<PgTypeContainer> m_types;
std::shared_ptr<PgDatabaseContainer> m_databases;
std::shared_ptr<PgAuthIdContainer> m_authIds;
};
QString getRoleNameFromOid(std::shared_ptr<const PgDatabaseCatalogue> cat, Oid oid);
QString getRoleDisplayString(std::shared_ptr<const PgDatabaseCatalogue> cat, Oid oid);
#endif // PGSQLDATABASECATALOGUE_H