pg_classes can be loaded now, used in TablesTableModel for overview of tables in database.

This commit is contained in:
eelke 2017-12-10 10:35:46 +01:00
parent 43e6042794
commit 6466062cc8
23 changed files with 524 additions and 173 deletions

58
pglab/PgDatabaseCatalog.h Normal file
View file

@ -0,0 +1,58 @@
#ifndef PGSQLDATABASECATALOGUE_H
#define PGSQLDATABASECATALOGUE_H
#include <libpq-fe.h>
#include <QString>
#include <memory>
#include <vector>
namespace Pgsql {
class Connection;
}
class PgAuthIdContainer;
class PgClassContainer;
class PgDatabaseContainer;
class PgTypeContainer;
class PgDatabaseCatalog: public std::enable_shared_from_this<PgDatabaseCatalog> {
public:
PgDatabaseCatalog();
PgDatabaseCatalog(const PgDatabaseCatalog&) = delete;
PgDatabaseCatalog& operator = (const PgDatabaseCatalog&) = delete;
~PgDatabaseCatalog();
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);
void loadClasses(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;
std::shared_ptr<const PgClassContainer> classes() 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;
std::shared_ptr<PgClassContainer> m_classes;
};
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);
#endif // PGSQLDATABASECATALOGUE_H