#include "OpenDatabase.h" #include "PgDatabaseCatalogue.h" #include "PgsqlConn.h" #include "TypeSelectionItemModel.h" Expected OpenDatabase::createOpenDatabase(const ConnectionConfig &cfg) { OpenDatabase *odb = new OpenDatabase(cfg, nullptr); if (odb->Init()) { } return odb; //return Expected::fromException(std::out_of_range("Invalid row")); } OpenDatabase::OpenDatabase(const ConnectionConfig& cfg, QObject *parent) : QObject(parent) , m_config(cfg) , m_catalogue(new PgDatabaseCatalogue) { } OpenDatabase::~OpenDatabase() { delete m_catalogue; } bool OpenDatabase::Init() { Pgsql::Connection conn; auto kw = m_config.getKeywords(); auto vals = m_config.getValues(); if (conn.connect(kw, vals, 0)) { m_catalogue->loadAll(conn); } return true; } PgDatabaseCatalogue* OpenDatabase::catalogue() { return m_catalogue; } TypeSelectionItemModel* OpenDatabase::typeSelectionModel() { if (m_typeSelectionModel == nullptr) { m_typeSelectionModel = new TypeSelectionItemModel(nullptr); m_typeSelectionModel->setTypeList(m_catalogue->types()); } return m_typeSelectionModel; }