Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 1b167b6c

Von Christian Ehringfeld vor mehr als 8 Jahren hinzugefügt

  • ID 1b167b6c3d5f033447e1bd5329b85a0c70580545
  • Vorgänger 506067a2
  • Nachfolger dc618bda

improvements

Unterschiede anzeigen:

src/queryinterpreter.cpp
#include "orderby.h"
#include "expression.h"
#include "schema.h"
#include <QDebug>
using namespace CuteEntityManager;
......
this->builder = builder;
}
QSqlQuery QueryInterpreter::build(const Query &q) {
QSqlQuery QueryInterpreter::build(Query &q) {
QList<QString> clauses = QList<QString>();
clauses.append(this->buildSelect(q.getSelect(), q.getDistinct(),
clauses.append(this->buildSelect(q, q.getSelect(), q.getDistinct(),
q.getSelectOption()));
clauses.append(this->buildFrom(q.getFrom()));
clauses.append(this->buildJoin(q.getJoins()));
clauses.append(this->buildWhere(q.getWhere()));
clauses.append(this->buildWhere(q, q.getWhere()));
clauses.append(this->buildGroupBy(q.getGroupBy()));
clauses.append(this->buildHaving(q.getHaving()));
clauses.append(this->buildHaving(q, q.getHaving()));
QString sql = "";
bool first = true;
for (int i = 0; i < clauses.size(); ++i) {
......
q.getOffset());
QSqlQuery sqlQuery = this->builder->getQuery();
sqlQuery.prepare(sql);
qDebug() << "--------------------------------------";
for (auto i = q.getParams().constBegin(); i != q.getParams().constEnd(); ++i) {
qDebug() << i.key() << i.value();
}
qDebug() << "--------------------------------------";
this->builder->bindValues(q.getParams(), sqlQuery, false);
return sqlQuery;
}
QString QueryInterpreter::buildSelect(const QList<Expression> &columns,
QString QueryInterpreter::buildSelect(Query &q,
const QList<Expression> &columns,
const bool &distinct, const QString &selectOption) const {
QString sqlSelect = distinct ? "SELECT DISTINCT" : "SELECT";
if (!selectOption.isEmpty()) {
......
sqlSelect += ", ";
}
Expression e = columns.at(i);
q.appendParams(e.getParams());
QString nExp = e.getExpression();
if (e.getOnlyColumn()) {
sqlSelect += this->builder->getSchema()->quoteColumnName(e.getExpression());
......
return sqlJoin;
}
QString QueryInterpreter::buildWhere(const QList<Expression> &conditions)
QString QueryInterpreter::buildWhere(Query &q,
const QList<Expression> &conditions)
const {
QString where = this->buildCondition(conditions);
QString where = this->buildCondition(q, conditions);
return where.isEmpty() ? "" : ("WHERE " + where);
}
......
groupBy);
}
QString QueryInterpreter::buildHaving(const QList<Expression> &conditions)
QString QueryInterpreter::buildHaving(Query &q,
const QList<Expression> &conditions)
const {
QString having = this->buildCondition(conditions);
QString having = this->buildCondition(q, conditions);
return having.isEmpty() ? "" : ("HAVING " + having);
}
......
if (!sqlOrderBy.isEmpty()) {
sql += this->builder->getSeparator() + sqlOrderBy;
}
QString sqlLimit = this->builder->limit(limit, offset);
QString sqlLimit = this->builder->limit(limit, offset, false);
if (!sqlLimit.isEmpty()) {
sql += this->builder->getSeparator() + sqlLimit;
}
......
return sqlOrder;
}
QString QueryInterpreter::buildCondition(const QList<Expression> &conditions)
QString QueryInterpreter::buildCondition(Query &q,
const QList<Expression> &conditions)
const {
if (conditions.isEmpty()) {
return "";
......
}
}
sqlCondition += expression;
q.appendParams(q.getParams());
}
return sqlCondition;
}

Auch abrufbar als: Unified diff