#ifndef OPENDATABASE_H #define OPENDATABASE_H #include "ConnectionConfig.h" #include "Expected.h" #include class PgDatabaseCatalog; class TypeSelectionItemModel; /** Instances of this class represent a single database on which atleast one * window is opened. This class is used to track details about that database. */ class OpenDatabase { public: using OpenDatabaseSPtr = std::shared_ptr; static Expected createOpenDatabase(const ConnectionConfig &cfg); // using on_createResult_callback = std::function>)>; // void asyncCreateOpenDatabase(const ConnectionConfig &cfg, on_createResult_callback); OpenDatabase(const OpenDatabase &) = delete; OpenDatabase& operator=(const OpenDatabase &) = delete; ~OpenDatabase(); std::shared_ptr catalogue(); TypeSelectionItemModel* typeSelectionModel(); const ConnectionConfig& config() const { return m_config; } private: ConnectionConfig m_config; std::shared_ptr m_catalogue; TypeSelectionItemModel *m_typeSelectionModel = nullptr; OpenDatabase(const ConnectionConfig& cfg); bool Init(); }; #endif // OPENDATABASE_H