Improved connection error handling.
Just returning a boolean is too limiting. Using expection instead to easily pass on error message.
This commit is contained in:
parent
646b18ebeb
commit
a88af1ac11
5 changed files with 41 additions and 41 deletions
|
|
@ -5,15 +5,18 @@
|
|||
|
||||
Expected<OpenDatabase::OpenDatabaseSPtr> OpenDatabase::createOpenDatabase(const ConnectionConfig &cfg)
|
||||
{
|
||||
OpenDatabaseSPtr odb(new OpenDatabase(cfg));
|
||||
if (odb->Init()) {
|
||||
return Expected<OpenDatabase::OpenDatabaseSPtr>::fromCode(
|
||||
[&cfg] () -> auto {
|
||||
OpenDatabaseSPtr odb(new OpenDatabase(cfg));
|
||||
odb->Init();
|
||||
return odb;
|
||||
});
|
||||
// catch (const PgException &ex) {
|
||||
// return
|
||||
// }
|
||||
|
||||
return odb;
|
||||
|
||||
}
|
||||
//return Expected<ConnectionConfig>::fromException(std::out_of_range("Invalid row"));
|
||||
return Expected<OpenDatabaseSPtr>::fromException(
|
||||
std::runtime_error("Failed to get database information"));
|
||||
// return Expected<OpenDatabaseSPtr>::fromException(
|
||||
// std::runtime_error("Failed to get database information"));
|
||||
}
|
||||
|
||||
OpenDatabase::OpenDatabase(const ConnectionConfig& cfg)
|
||||
|
|
@ -24,16 +27,13 @@ OpenDatabase::OpenDatabase(const ConnectionConfig& cfg)
|
|||
|
||||
OpenDatabase::~OpenDatabase() = default;
|
||||
|
||||
bool OpenDatabase::Init()
|
||||
void OpenDatabase::Init()
|
||||
{
|
||||
Pgsql::Connection conn;
|
||||
auto kw = m_config.getKeywords();
|
||||
auto vals = m_config.getValues();
|
||||
if (conn.connect(kw, vals, 0)) {
|
||||
m_catalog->loadAll(conn, nullptr);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
conn.connect(kw, vals, 0);
|
||||
m_catalog->loadAll(conn, nullptr);
|
||||
}
|
||||
|
||||
std::shared_ptr<PgDatabaseCatalog> OpenDatabase::catalog()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue