pgLab/pglab/PgDatabaseCatalogue.h
2017-11-26 13:07:21 +01:00

49 lines
1.2 KiB
C++

#ifndef PGSQLDATABASECATALOGUE_H
#define PGSQLDATABASECATALOGUE_H
#include <libpq-fe.h>
#include <QString>
#include <vector>
namespace Pgsql {
class Connection;
}
class PgTypeContainer;
class PgDatabaseContainer;
class PgAuthIdContainer;
class 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;
const PgTypeContainer* types() const;
const PgDatabaseContainer *databases() const;
const PgAuthIdContainer *authIds() const;
private:
QString m_serverVersionString;
int m_serverVersion;
PgTypeContainer *m_types = nullptr;
PgDatabaseContainer *m_databases = nullptr;
PgAuthIdContainer *m_authIds = nullptr;
};
QString getRoleNameFromOid(const PgDatabaseCatalogue *cat, Oid oid);
#endif // PGSQLDATABASECATALOGUE_H