2017-01-25 06:52:02 +01:00
|
|
|
|
#ifndef PGSQLDATABASECATALOGUE_H
|
|
|
|
|
|
#define PGSQLDATABASECATALOGUE_H
|
|
|
|
|
|
|
2017-08-23 13:27:23 +02:00
|
|
|
|
#include <libpq-fe.h>
|
2017-02-18 12:05:48 +01:00
|
|
|
|
#include <QString>
|
2017-12-09 20:21:22 +01:00
|
|
|
|
#include <memory>
|
2017-01-25 06:52:02 +01:00
|
|
|
|
#include <vector>
|
|
|
|
|
|
|
2017-02-01 20:00:25 +01:00
|
|
|
|
namespace Pgsql {
|
|
|
|
|
|
|
|
|
|
|
|
class Connection;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-12-12 20:13:53 +01:00
|
|
|
|
class PgAttributeContainer;
|
2017-02-18 12:05:48 +01:00
|
|
|
|
class PgAuthIdContainer;
|
2017-12-10 10:35:46 +01:00
|
|
|
|
class PgClassContainer;
|
|
|
|
|
|
class PgDatabaseContainer;
|
2017-12-17 11:28:20 +01:00
|
|
|
|
class PgIndexContainer;
|
2017-12-12 20:13:53 +01:00
|
|
|
|
class PgNamespaceContainer;
|
2017-12-10 10:35:46 +01:00
|
|
|
|
class PgTypeContainer;
|
2017-01-25 06:52:02 +01:00
|
|
|
|
|
2017-12-10 10:35:46 +01:00
|
|
|
|
class PgDatabaseCatalog: public std::enable_shared_from_this<PgDatabaseCatalog> {
|
2017-01-25 06:52:02 +01:00
|
|
|
|
public:
|
2017-12-10 10:35:46 +01:00
|
|
|
|
PgDatabaseCatalog();
|
|
|
|
|
|
PgDatabaseCatalog(const PgDatabaseCatalog&) = delete;
|
|
|
|
|
|
PgDatabaseCatalog& operator = (const PgDatabaseCatalog&) = delete;
|
2017-02-01 20:00:25 +01:00
|
|
|
|
|
2017-12-10 10:35:46 +01:00
|
|
|
|
~PgDatabaseCatalog();
|
2017-02-01 20:00:25 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void loadAll(Pgsql::Connection &conn);
|
2017-12-17 11:28:20 +01:00
|
|
|
|
void loadInfo(Pgsql::Connection &conn);
|
2017-12-12 20:13:53 +01:00
|
|
|
|
|
|
|
|
|
|
void loadAttributes(Pgsql::Connection &conn);
|
2017-02-18 12:05:48 +01:00
|
|
|
|
void loadAuthIds(Pgsql::Connection &conn);
|
2017-12-10 10:35:46 +01:00
|
|
|
|
void loadClasses(Pgsql::Connection &conn);
|
2017-12-12 20:13:53 +01:00
|
|
|
|
void loadDatabases(Pgsql::Connection &conn);
|
2017-12-17 11:28:20 +01:00
|
|
|
|
void loadIndexes(Pgsql::Connection &conn);
|
2017-12-12 20:13:53 +01:00
|
|
|
|
void loadNamespaces(Pgsql::Connection &conn);
|
|
|
|
|
|
void loadTypes(Pgsql::Connection &conn);
|
2017-02-18 12:05:48 +01:00
|
|
|
|
|
|
|
|
|
|
const QString& serverVersionString() const;
|
|
|
|
|
|
int serverVersion() const;
|
2017-01-25 06:52:02 +01:00
|
|
|
|
|
2017-12-12 20:13:53 +01:00
|
|
|
|
std::shared_ptr<const PgAttributeContainer> attributes() const;
|
2017-12-09 20:21:22 +01:00
|
|
|
|
std::shared_ptr<const PgAuthIdContainer> authIds() const;
|
2017-12-10 10:35:46 +01:00
|
|
|
|
std::shared_ptr<const PgClassContainer> classes() const;
|
2017-12-12 20:13:53 +01:00
|
|
|
|
std::shared_ptr<const PgDatabaseContainer> databases() const;
|
2017-12-17 11:28:20 +01:00
|
|
|
|
std::shared_ptr<const PgIndexContainer> indexes() const;
|
2017-12-12 20:13:53 +01:00
|
|
|
|
std::shared_ptr<const PgNamespaceContainer> namespaces() const;
|
|
|
|
|
|
std::shared_ptr<const PgTypeContainer> types() const;
|
2017-01-25 06:52:02 +01:00
|
|
|
|
private:
|
2017-02-18 12:05:48 +01:00
|
|
|
|
QString m_serverVersionString;
|
|
|
|
|
|
int m_serverVersion;
|
2017-12-12 20:13:53 +01:00
|
|
|
|
|
|
|
|
|
|
std::shared_ptr<PgAttributeContainer> m_attributes;
|
2017-12-09 20:21:22 +01:00
|
|
|
|
std::shared_ptr<PgAuthIdContainer> m_authIds;
|
2017-12-10 10:35:46 +01:00
|
|
|
|
std::shared_ptr<PgClassContainer> m_classes;
|
2017-12-12 20:13:53 +01:00
|
|
|
|
std::shared_ptr<PgDatabaseContainer> m_databases;
|
2017-12-17 11:28:20 +01:00
|
|
|
|
std::shared_ptr<PgIndexContainer> m_indexes;
|
2017-12-12 20:13:53 +01:00
|
|
|
|
std::shared_ptr<PgNamespaceContainer> m_namespaces;
|
|
|
|
|
|
std::shared_ptr<PgTypeContainer> m_types;
|
2017-01-25 06:52:02 +01:00
|
|
|
|
};
|
|
|
|
|
|
|
2017-12-10 10:35:46 +01:00
|
|
|
|
QString getRoleNameFromOid(const PgDatabaseCatalog &cat, Oid oid);
|
|
|
|
|
|
QString getRoleDisplayString(const PgDatabaseCatalog &cat, Oid oid);
|
|
|
|
|
|
QString getNamespaceDisplayString(const PgDatabaseCatalog &cat, Oid oid);
|
|
|
|
|
|
QString getTablespaceDisplayString(const PgDatabaseCatalog &cat, Oid oid);
|
2017-12-12 20:13:53 +01:00
|
|
|
|
QString getTypeDisplayString(const PgDatabaseCatalog &cat, Oid oid);
|
2017-12-09 10:45:13 +01:00
|
|
|
|
|
2017-02-18 12:05:48 +01:00
|
|
|
|
|
2017-01-25 06:52:02 +01:00
|
|
|
|
#endif // PGSQLDATABASECATALOGUE_H
|