#include "OpenDatabase.h" #include "catalog/PgDatabaseCatalog.h" #include "Pgsql_Connection.h" #include "Pgsql_PgException.h" #include "model/TypeSelectionItemModel.h" OpenDatabase::OpenDatabaseSPtr OpenDatabase::createOpenDatabase(const ConnectionConfig &cfg) { try { OpenDatabaseSPtr odb(new OpenDatabase(cfg)); odb->Init(); return odb; } catch (const Pgsql::PgException &ex) { throw OpenDatabaseException(ex.what()); } } OpenDatabase::OpenDatabase(const ConnectionConfig& cfg) : m_config(cfg) , m_catalog(std::make_shared()) { } OpenDatabase::~OpenDatabase() = default; void OpenDatabase::Init() { Pgsql::Connection conn; auto kw = m_config.getKeywords(); auto vals = m_config.getValues(); conn.connect(kw, vals, 0); m_catalog->loadAll(conn, nullptr); } std::shared_ptr OpenDatabase::catalog() { return m_catalog; } TypeSelectionItemModel* OpenDatabase::typeSelectionModel() { if (m_typeSelectionModel == nullptr) { m_typeSelectionModel = new TypeSelectionItemModel(nullptr); m_typeSelectionModel->setTypeList(m_catalog->types()); } return m_typeSelectionModel; }