pgLab/opendatabase.cpp
Eelke Klein 37e8882a3c New syntax highlighter not complete.
- Supports comments
- more efficient as it scans the text block instead of repeatedly searching throught the whole block
- type matching based on catalog (but need to add aliases manually)
- added many keywords

todo:
- heap corruption bug
- symbol stops at special char like parenthese or operator or something similar.
2017-02-07 21:39:45 +01:00

53 lines
1.1 KiB
C++

#include "OpenDatabase.h"
#include "pgsqldatabasecatalogue.h"
#include "PgsqlConn.h"
#include "typeselectionitemmodel.h"
Expected<OpenDatabase*> OpenDatabase::createOpenDatabase(const ConnectionConfig &cfg)
{
OpenDatabase *odb = new OpenDatabase(cfg, nullptr);
if (odb->Init()) {
}
return odb;
//return Expected<ConnectionConfig>::fromException(std::out_of_range("Invalid row"));
}
OpenDatabase::OpenDatabase(const ConnectionConfig& cfg, QObject *parent)
: QObject(parent)
, m_config(cfg)
, m_catalogue(new PgsqlDatabaseCatalogue)
{
}
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;
}
PgsqlDatabaseCatalogue* 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;
}