diff options
Diffstat (limited to 'project2/sql/sqlWriter.cpp')
| -rw-r--r-- | project2/sql/sqlWriter.cpp | 134 |
1 files changed, 0 insertions, 134 deletions
diff --git a/project2/sql/sqlWriter.cpp b/project2/sql/sqlWriter.cpp deleted file mode 100644 index f654636..0000000 --- a/project2/sql/sqlWriter.cpp +++ /dev/null @@ -1,134 +0,0 @@ -#include <pch.hpp> -#include "sqlWriter.h" -#include "scripts.h" -#include <boost/bind.hpp> -#include "sqlVariableBinder.h" - -DynamicSql::SqlWriter::SqlWriter() -{ -} - -DynamicSql::SqlWriter::~SqlWriter() -{ -} - -template <typename Type, typename Cons> -static -void -appendNew(DynamicSql::Writers * w, const Cons & cons) -{ - w->push_back(new Type(cons)); -} - -static -void -appendNewFromNode(DynamicSql::Writers * w, DynamicSql::SqlCommand::Filters * fs, ScriptNodePtr p) -{ - if (fs && p->get_name() == "filter") { - DynamicSql::SqlFilterPtr f = new DynamicSql::SqlFilter(p); - w->push_back(f); - fs->insert(DynamicSql::SqlCommand::Filters::value_type(f->name, f)); - } - else if (p->get_name() == "param") { - w->push_back(new DynamicSql::SqlParameter(p)); - } -} - -DynamicSql::SqlCommand::SqlCommand(ScriptNodePtr s) -{ - if (s) { - s->composeWithCallbacks( - boost::bind(&appendNew<SqlText, Glib::ustring>, &writers, _1), - boost::bind(&appendNewFromNode, &writers, &filters, _1)); - } -} - -Glib::ustring -DynamicSql::SqlCommand::getSqlFor(const Glib::ustring & f) const -{ - for (const SqlCommand::Filters::value_type & filter : filters) { - filter.second->active = (filter.second->name == f); - } - Buffer sql; - writeSql(sql); - return Glib::ustring(sql.str()); -} - -void -DynamicSql::SqlCommand::writeSql(Buffer & sql) const -{ - for (const SqlWriterPtr & w : writers) { - w->writeSql(sql); - } -} - -void -DynamicSql::SqlCommand::bindParams(ExecContext * ec, DB::Command * cmd, unsigned int & offset) const -{ - for (const SqlWriterPtr & w : writers) { - w->bindParams(ec, cmd, offset); - } -} - -DynamicSql::SqlFilter::SqlFilter(ScriptNodePtr p) : - name(p->value("name", NULL).as<Glib::ustring>()), - active(false) -{ - p->composeWithCallbacks( - boost::bind(&appendNew<SqlText, Glib::ustring>, &writers, _1), - boost::bind(&appendNewFromNode, &writers, (DynamicSql::SqlCommand::Filters *)NULL, _1)); -} - -void -DynamicSql::SqlFilter::writeSql(Buffer & sql) const -{ - if (active) { - for (const SqlWriterPtr & w : writers) { - w->writeSql(sql); - } - } -} - -void -DynamicSql::SqlFilter::bindParams(ExecContext * ec, DB::Command * cmd, unsigned int & offset) const -{ - if (active) { - for (const SqlWriterPtr & w : writers) { - w->bindParams(ec, cmd, offset); - } - } -} - -DynamicSql::SqlParameter::SqlParameter(ScriptNodePtr n) : - Variable(n, boost::optional<Glib::ustring>("local")) -{ -} - -void -DynamicSql::SqlParameter::writeSql(Buffer & sql) const -{ - sql.append("?"); -} - -void -DynamicSql::SqlParameter::bindParams(ExecContext * ec, DB::Command * cmd, unsigned int & offset) const -{ - boost::apply_visitor<const SqlVariableBinder, const VariableType>(SqlVariableBinder(cmd, offset++), (*this)(ec)); -} - -DynamicSql::SqlText::SqlText(const Glib::ustring & n) : - text(n) -{ -} - -void -DynamicSql::SqlText::writeSql(Buffer & sql) const -{ - sql.append(text); -} - -void -DynamicSql::SqlText::bindParams(ExecContext *, DB::Command *, unsigned int &) const -{ -} - |
