#include "OpenDatabase.h" #include "catalog/PgDatabaseCatalog.h" #include "Pgsql_Connection.h" #include "model/TypeSelectionItemModel.h" Expected OpenDatabase::createOpenDatabase(const ConnectionConfig &cfg) { return Expected::fromCode( [&cfg] () -> auto { OpenDatabaseSPtr odb(new OpenDatabase(cfg)); odb->Init(); return odb; }); // catch (const PgException &ex) { // return // } // return Expected::fromException( // std::runtime_error("Failed to get database information")); } 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; }