Started with classes for keeping track of the database schema.

Class to represent the contents of pg_type catalog table.
This commit is contained in:
Eelke Klein 2017-01-25 06:52:02 +01:00
parent 202e6e431a
commit 424cbc9e2e
6 changed files with 192 additions and 0 deletions

37
pgtypecontainer.h Normal file
View file

@ -0,0 +1,37 @@
#ifndef PGTYPECONTAINER_H
#define PGTYPECONTAINER_H
#include <vector>
#include "pgtype.h"
namespace Pgsql {
class Result;
}
class PgTypeContainer {
public:
using t_Types = std::vector<PgType>; ///< Do not assume it will stay a vector only expect bidirectional access
PgTypeContainer();
t_Types::const_iterator begin() const { return m_types.begin(); }
t_Types::const_iterator end() const { return m_types.end(); }
void clear();
std::string getLoadQuery();
void load(const Pgsql::Result &res);
/** Searches for the type matching the specified oid.
*
* \return Returns the matching type or if it is not found a default constructed PgType (oid == InvalidOid).
*/
const PgType& getTypeByOid(Oid oid) const;
const PgType& getTypeByName(const QString &name) const;
private:
PgType m_invalidType; ///< default constructed object for when a non existent type is being retrieved.
t_Types m_types; // Keep sorted by Oid
};
#endif // PGTYPECONTAINER_H