wip: remove ascii cast warnings

This commit is contained in:
Hamed Masafi 2020-07-30 17:41:45 +04:30
parent a6c6c9b4d6
commit 6e186e0365
11 changed files with 217 additions and 212 deletions

View File

@ -219,7 +219,7 @@ bool DatabasePrivate::getCurrectSchema()
if (!nutClassInfoString(q->metaObject()->classInfo(i), if (!nutClassInfoString(q->metaObject()->classInfo(i),
type, name, value)) { type, name, value)) {
errorMessage = QString::fromUtf8("No valid table in %1") errorMessage = QStringLiteral("No valid table in %1")
.arg(q->metaObject()->classInfo(i).value()); .arg(q->metaObject()->classInfo(i).value());
continue; continue;
} }

View File

@ -78,7 +78,7 @@ QString MySqlGenerator::fieldType(FieldModel *field)
case QMetaType::QString: case QMetaType::QString:
if(field->length) if(field->length)
dbType = QString::fromUtf8("VARCHAR(%1)").arg(field->length); dbType = QStringLiteral("VARCHAR(%1)").arg(field->length);
else else
dbType = QStringLiteral("TEXT"); dbType = QStringLiteral("TEXT");
break; break;
@ -316,7 +316,7 @@ QString MySqlGenerator::createConditionalPhrase(const PhraseData *d) const
case PhraseData::AddMinutesDateTime: case PhraseData::AddMinutesDateTime:
case PhraseData::AddSeconds: case PhraseData::AddSeconds:
case PhraseData::AddSecondsDateTime: case PhraseData::AddSecondsDateTime:
return QString::fromUtf8("DATE_ADD(%1, INTERVAL %2 %3)") return QStringLiteral("DATE_ADD(%1, INTERVAL %2 %3)")
.arg(createConditionalPhrase(d->left), .arg(createConditionalPhrase(d->left),
d->operand.toString(), d->operand.toString(),
SqlGeneratorBase::dateTimePartName(op)); SqlGeneratorBase::dateTimePartName(op));
@ -333,7 +333,7 @@ QString MySqlGenerator::createConditionalPhrase(const PhraseData *d) const
case PhraseData::DatePartHour: case PhraseData::DatePartHour:
case PhraseData::DatePartMinute: case PhraseData::DatePartMinute:
case PhraseData::DatePartSecond: case PhraseData::DatePartSecond:
return QString::fromUtf8("%2(%1)") return QStringLiteral("%2(%1)")
.arg(createConditionalPhrase(d->left), .arg(createConditionalPhrase(d->left),
SqlGeneratorBase::dateTimePartName(op)); SqlGeneratorBase::dateTimePartName(op));
@ -348,11 +348,11 @@ QString MySqlGenerator::createConditionalPhrase(const PhraseData *d) const
void MySqlGenerator::appendSkipTake(QString &sql, int skip, int take) void MySqlGenerator::appendSkipTake(QString &sql, int skip, int take)
{ {
if (take > 0 && skip > 0) { if (take > 0 && skip > 0) {
sql.append(QString::fromUtf8(" LIMIT %1 OFFSET %2") sql.append(QStringLiteral(" LIMIT %1 OFFSET %2")
.arg(take) .arg(take)
.arg(skip)); .arg(skip));
} else if (take > 0) { } else if (take > 0) {
sql.append(QString::fromUtf8(" LIMIT %1").arg(take)); sql.append(QStringLiteral(" LIMIT %1").arg(take));
} }
} }

View File

@ -140,7 +140,7 @@ QString PostgreSqlGenerator::fieldType(FieldModel *field)
case QMetaType::QString: case QMetaType::QString:
if(field->length) if(field->length)
dbType = QString("VARCHAR(%1)").arg(field->length); dbType = QStringLiteral("VARCHAR(%1)").arg(field->length);
else else
dbType = QStringLiteral("TEXT"); dbType = QStringLiteral("TEXT");
break; break;
@ -228,11 +228,11 @@ QString PostgreSqlGenerator::escapeValue(const QVariant &v) const
if (v.type() == QVariant::Point) { if (v.type() == QVariant::Point) {
QPoint pt = v.toPoint(); QPoint pt = v.toPoint();
return QString::fromUtf8("point(%1, %2)").arg(pt.x()).arg(pt.y()); return QStringLiteral("point(%1, %2)").arg(pt.x()).arg(pt.y());
} }
if (v.type() == QVariant::PointF) { if (v.type() == QVariant::PointF) {
QPointF pt = v.toPointF(); QPointF pt = v.toPointF();
return QString::fromUtf8("point(%1, %2)").arg(pt.x()).arg(pt.y()); return QStringLiteral("point(%1, %2)").arg(pt.x()).arg(pt.y());
} }
if (v.userType() == QMetaType::QJsonDocument) { if (v.userType() == QMetaType::QJsonDocument) {
return QStringLiteral("'") return QStringLiteral("'")
@ -249,9 +249,10 @@ QString PostgreSqlGenerator::escapeValue(const QVariant &v) const
pt = pol.at(i); pt = pol.at(i);
if (!ret.isEmpty()) if (!ret.isEmpty())
ret.append(QStringLiteral("),(")); ret.append(QStringLiteral("),("));
ret.append(QString::number(pt.x()) + ", " + QString::number(pt.y())); ret.append(QString::number(pt.x())
+ QStringLiteral(", ") + QString::number(pt.y()));
} }
return "'((" + ret + "))'"; return QStringLiteral("'((") + ret + QStringLiteral("))'");
} }
if (v.type() == QVariant::PolygonF) { if (v.type() == QVariant::PolygonF) {
QString ret; QString ret;
@ -263,7 +264,7 @@ QString PostgreSqlGenerator::escapeValue(const QVariant &v) const
ret.append(QStringLiteral("),(")); ret.append(QStringLiteral("),("));
ret.append(QString::number(pt.x()) + ", " + QString::number(pt.y())); ret.append(QString::number(pt.x()) + ", " + QString::number(pt.y()));
} }
return "'((" + ret + "))'"; return QStringLiteral("'((") + ret + QStringLiteral("))'");
} }
#endif #endif
@ -352,7 +353,7 @@ QString PostgreSqlGenerator::createConditionalPhrase(const PhraseData *d) const
if (d->type == PhraseData::WithVariant) { if (d->type == PhraseData::WithVariant) {
if (isPostGisType(d->operand.type()) && d->operatorCond == PhraseData::Equal) { if (isPostGisType(d->operand.type()) && d->operatorCond == PhraseData::Equal) {
return QString::fromUtf8("%1 ~= %2") return QStringLiteral("%1 ~= %2")
.arg(SqlGeneratorBase::createConditionalPhrase(d->left), .arg(SqlGeneratorBase::createConditionalPhrase(d->left),
escapeValue(d->operand)); escapeValue(d->operand));
} }
@ -369,7 +370,7 @@ QString PostgreSqlGenerator::createConditionalPhrase(const PhraseData *d) const
case PhraseData::AddMinutesDateTime: case PhraseData::AddMinutesDateTime:
case PhraseData::AddSeconds: case PhraseData::AddSeconds:
case PhraseData::AddSecondsDateTime: case PhraseData::AddSecondsDateTime:
return QString::fromUtf8("%1 + interval '%2 %3'") return QStringLiteral("%1 + interval '%2 %3'")
.arg(createConditionalPhrase(d->left), .arg(createConditionalPhrase(d->left),
d->operand.toString(), d->operand.toString(),
SqlGeneratorBase::dateTimePartName(op)); SqlGeneratorBase::dateTimePartName(op));
@ -387,7 +388,7 @@ QString PostgreSqlGenerator::createConditionalPhrase(const PhraseData *d) const
case PhraseData::DatePartHour: case PhraseData::DatePartHour:
case PhraseData::DatePartMinute: case PhraseData::DatePartMinute:
case PhraseData::DatePartSecond: case PhraseData::DatePartSecond:
return QString::fromUtf8("date_part('%2', %1)") return QStringLiteral("date_part('%2', %1)")
.arg(createConditionalPhrase(d->left), .arg(createConditionalPhrase(d->left),
SqlGeneratorBase::dateTimePartName(op)); SqlGeneratorBase::dateTimePartName(op));

View File

@ -117,7 +117,7 @@ QString SqlGeneratorBase::recordsPhrase(TableModel *table)
foreach (FieldModel *f, table->fields()) { foreach (FieldModel *f, table->fields()) {
if (!ret.isEmpty()) if (!ret.isEmpty())
ret.append(QLatin1String(", ")); ret.append(QLatin1String(", "));
ret.append(QString::fromUtf8("%1.%2 AS \"%1.%2\"").arg(table->name(), f->name)); ret.append(QStringLiteral("%1.%2 AS \"%1.%2\"").arg(table->name(), f->name));
} }
return ret; return ret;
} }
@ -134,7 +134,7 @@ QString SqlGeneratorBase::insertBulk(const QString &tableName, const PhraseList
sql.append(QLatin1String(", ")); sql.append(QLatin1String(", "));
sql.append(QLatin1String("(") + values.join(QLatin1String(", ")) + QLatin1String(")")); sql.append(QLatin1String("(") + values.join(QLatin1String(", ")) + QLatin1String(")"));
} }
sql = QString::fromUtf8("INSERT INTO %1 (%2) VALUES %3") sql = QStringLiteral("INSERT INTO %1 (%2) VALUES %3")
.arg(tableName, createFieldPhrase(ph), sql); .arg(tableName, createFieldPhrase(ph), sql);
removeTableNames(sql); removeTableNames(sql);
@ -165,7 +165,7 @@ QStringList SqlGeneratorBase::constraints(TableModel *table)
QString SqlGeneratorBase::relationDeclare(const RelationModel *relation) QString SqlGeneratorBase::relationDeclare(const RelationModel *relation)
{ {
return QString::fromUtf8("FOREIGN KEY (FK_%1) REFERENCES %2(%1)") return QStringLiteral("FOREIGN KEY (FK_%1) REFERENCES %2(%1)")
.arg(relation->localColumn, relation->slaveTable->name()); .arg(relation->localColumn, relation->slaveTable->name());
} }
@ -221,7 +221,7 @@ QStringList SqlGeneratorBase::diff(TableModel *oldTable, TableModel *newTable)
return QStringList(); return QStringList();
if (!newTable) if (!newTable)
return QStringList() << ("DROP TABLE " + oldTable->name()); return QStringList() << (QStringLiteral("DROP TABLE ") + oldTable->name());
QList<QString> fieldNames; QList<QString> fieldNames;
QList<QString> relations; QList<QString> relations;
@ -272,7 +272,7 @@ QStringList SqlGeneratorBase::diff(TableModel *oldTable, TableModel *newTable)
// } // }
QString sql; QString sql;
if (oldTable) { if (oldTable) {
sql = QString::fromUtf8("ALTER TABLE %1 \n%2") sql = QStringLiteral("ALTER TABLE %1 \n%2")
.arg(newTable->name(), columnSql.join(QStringLiteral(",\n"))); .arg(newTable->name(), columnSql.join(QStringLiteral(",\n")));
} else { } else {
if (!newTable->primaryKey().isNull()) { if (!newTable->primaryKey().isNull()) {
@ -282,7 +282,7 @@ QStringList SqlGeneratorBase::diff(TableModel *oldTable, TableModel *newTable)
columnSql << constraints(newTable); columnSql << constraints(newTable);
} }
sql = QString::fromUtf8("CREATE TABLE %1 \n(%2)") sql = QStringLiteral("CREATE TABLE %1 \n(%2)")
.arg(newTable->name(), columnSql.join(QStringLiteral(",\n"))); .arg(newTable->name(), columnSql.join(QStringLiteral(",\n")));
} }
@ -343,13 +343,13 @@ QStringList SqlGeneratorBase::diff(RelationModel *oldRel, RelationModel *newRel)
.arg(newRelation->foreignColumn); .arg(newRelation->foreignColumn);
*/ */
if (!oldRel) if (!oldRel)
ret.append(QString::fromUtf8("ADD CONSTRAINT FK_%1 FOREIGN KEY (%1) " ret.append(QStringLiteral("ADD CONSTRAINT FK_%1 FOREIGN KEY (%1) "
"REFERENCES %2(%3)") "REFERENCES %2(%3)")
.arg(newRel->localColumn, newRel->masterTable->name(), .arg(newRel->localColumn, newRel->masterTable->name(),
newRel->foreignColumn)); newRel->foreignColumn));
if (!newRel) if (!newRel)
ret.append(QString::fromUtf8("ADD CONSTRAINT FK_%1 FOREIGN KEY (%1) " ret.append(QStringLiteral("ADD CONSTRAINT FK_%1 FOREIGN KEY (%1) "
"REFERENCES %2(%3)") "REFERENCES %2(%3)")
.arg(oldRel->localColumn, oldRel->masterTable->name(), .arg(oldRel->localColumn, oldRel->masterTable->name(),
oldRel->foreignColumn)); oldRel->foreignColumn));
@ -366,16 +366,17 @@ QString SqlGeneratorBase::join(const QString &mainTable,
QList<RelationModel*>::const_iterator i; QList<RelationModel*>::const_iterator i;
for (i = list.begin(); i != list.end(); ++i) { for (i = list.begin(); i != list.end(); ++i) {
if ((*i)->masterTable->name() == mainTable) { if ((*i)->masterTable->name() == mainTable) {
ret.append(QString(" INNER JOIN %3 ON %1.%2 = %3.%4") ret.append(QStringLiteral(" INNER JOIN %3 ON %1.%2 = %3.%4")
.arg((*i)->masterTable->name(), .arg((*i)->masterTable->name(),
(*i)->masterTable->primaryKey(), (*i)->masterTable->primaryKey(),
(*i)->slaveTable->name(), (*i)->slaveTable->name(),
(*i)->localColumn)); (*i)->localColumn));
if (order != Q_NULLPTR) if (order != Q_NULLPTR)
order->append((*i)->slaveTable->name() + "." + (*i)->slaveTable->primaryKey()); order->append((*i)->slaveTable->name() + QStringLiteral(".")
+ (*i)->slaveTable->primaryKey());
} else { } else {
ret.append(QString(" INNER JOIN %3 ON %1.%2 = %3.%4") ret.append(QStringLiteral(" INNER JOIN %3 ON %1.%2 = %3.%4")
.arg(mainTable, .arg(mainTable,
(*i)->localColumn, (*i)->localColumn,
(*i)->masterTable->name(), (*i)->masterTable->name(),
@ -401,12 +402,16 @@ QString SqlGeneratorBase::join(const QStringList &list, QStringList *order)
return QString(); return QString();
if (list.count() == 1) if (list.count() == 1)
return "[" + list.first() + "]"; return QStringLiteral("[")
+ list.first()
+ QStringLiteral("]");
DatabaseModel model = _database->model(); DatabaseModel model = _database->model();
QStringList clone = list; QStringList clone = list;
QString mainTable = clone.takeFirst(); QString mainTable = clone.takeFirst();
QString ret = "[" + mainTable + "]"; QString ret = QStringLiteral("[")
+ mainTable
+ QStringLiteral("]");
do { do {
if (!clone.count()) if (!clone.count())
@ -416,7 +421,7 @@ QString SqlGeneratorBase::join(const QStringList &list, QStringList *order)
RelationModel *rel = model.relationByClassNames(mainTable, clone.first()); RelationModel *rel = model.relationByClassNames(mainTable, clone.first());
if (rel) { if (rel) {
//mainTable is master of table //mainTable is master of table
ret.append(QString(" INNER JOIN [%1] ON %4.%2 = %1.%3") ret.append(QStringLiteral(" INNER JOIN [%1] ON %4.%2 = %1.%3")
.arg(table, rel->masterTable->primaryKey(), .arg(table, rel->masterTable->primaryKey(),
rel->localColumn, mainTable)); rel->localColumn, mainTable));
@ -427,7 +432,7 @@ QString SqlGeneratorBase::join(const QStringList &list, QStringList *order)
rel = model.relationByClassNames(clone.first(), mainTable); rel = model.relationByClassNames(clone.first(), mainTable);
if (rel) { if (rel) {
// table is master of mainTable // table is master of mainTable
ret.append(QString(" INNER JOIN [%1] ON %4.%2 = %1.%3") ret.append(QStringLiteral(" INNER JOIN [%1] ON %4.%2 = %1.%3")
.arg(table, rel->localColumn, .arg(table, rel->localColumn,
rel->masterTable->primaryKey(), mainTable)); rel->masterTable->primaryKey(), mainTable));
@ -463,12 +468,12 @@ QString SqlGeneratorBase::insertRecord(Table *t, QString tableName)
values.append(escapeValue(t->property(f.toLatin1().data()))); values.append(escapeValue(t->property(f.toLatin1().data())));
if (changedPropertiesText != "") if (changedPropertiesText != QStringLiteral(""))
changedPropertiesText.append(", "); changedPropertiesText.append(QStringLiteral(", "));
changedPropertiesText.append(f); changedPropertiesText.append(f);
} }
sql = QString("INSERT INTO %1 (%2) VALUES (%3)") sql = QStringLiteral("INSERT INTO %1 (%2) VALUES (%3)")
.arg(tableName, changedPropertiesText, values.join(", ")); .arg(tableName, changedPropertiesText, values.join(QStringLiteral(", ")));
removeTableNames(sql); removeTableNames(sql);
@ -484,11 +489,14 @@ QString SqlGeneratorBase::updateRecord(Table *t, QString tableName)
foreach (QString f, t->changedProperties()) foreach (QString f, t->changedProperties())
if (f != key) if (f != key)
values.append(f + "='" + t->property(f.toLatin1().data()).toString() values.append(f + QStringLiteral("='")
+ "'"); + t->property(f.toLatin1().data()).toString()
sql = QString("UPDATE %1 SET %2 WHERE %3=%4") + QStringLiteral("'"));
.arg(tableName, values.join(", "), sql = QStringLiteral("UPDATE %1 SET %2 WHERE %3=%4")
key, t->property(key.toUtf8().data()).toString()); .arg(tableName,
values.join(QStringLiteral(", ")),
key,
t->property(key.toUtf8().data()).toString());
removeTableNames(sql); removeTableNames(sql);
@ -499,7 +507,7 @@ QString SqlGeneratorBase::deleteRecord(Table *t, QString tableName)
{ {
auto model = _database->model().tableByName(tableName); auto model = _database->model().tableByName(tableName);
QString key = model->primaryKey(); QString key = model->primaryKey();
QString sql = QString("DELETE FROM %1 WHERE %2='%3'") QString sql = QStringLiteral("DELETE FROM %1 WHERE %2='%3'")
.arg(tableName, key, t->property(key.toUtf8().data()).toString()); .arg(tableName, key, t->property(key.toUtf8().data()).toString());
replaceTableNames(sql); replaceTableNames(sql);
return sql; return sql;
@ -510,19 +518,19 @@ QString SqlGeneratorBase::agregateText(const AgregateType &t,
{ {
switch (t) { switch (t) {
case Min: case Min:
return "MIN(" + arg + ")"; return QStringLiteral("MIN(") + arg + QStringLiteral(")");
case Max: case Max:
return "MAX(" + arg + ")"; return QStringLiteral("MAX(") + arg + QStringLiteral(")");
case Average: case Average:
return "AVG(" + arg + ")"; return QStringLiteral("AVG(") + arg + QStringLiteral(")");
case Count: case Count:
return "COUNT(" + arg + ")"; return QStringLiteral("COUNT(") + arg + QStringLiteral(")");
case Sum: case Sum:
return "SUM(" + arg + ")"; return QStringLiteral("SUM(") + arg + QStringLiteral(")");
case SingleField: case SingleField:
return arg; return arg;
@ -541,7 +549,7 @@ QString SqlGeneratorBase::fromTableText(const QString &tableName,
= _database->model().relationByTableNames(tableName, joinTableName); = _database->model().relationByTableNames(tableName, joinTableName);
if (rel) { if (rel) {
QString pk = _database->model().tableByName(tableName)->primaryKey(); QString pk = _database->model().tableByName(tableName)->primaryKey();
tableNameText = QString("%1 INNER JOIN %2 ON (%1.%3 = %2.%4)") tableNameText = QStringLiteral("%1 INNER JOIN %2 ON (%1.%3 = %2.%4)")
.arg(tableName, joinTableName, .arg(tableName, joinTableName,
pk, rel->localColumn); pk, rel->localColumn);
orderBy = tableName + "." + pk; orderBy = tableName + "." + pk;
@ -549,7 +557,7 @@ QString SqlGeneratorBase::fromTableText(const QString &tableName,
qWarning("Relation between table %s and class %s (%s) not exists!", qWarning("Relation between table %s and class %s (%s) not exists!",
qPrintable(tableName), qPrintable(tableName),
qPrintable(joinClassName), qPrintable(joinClassName),
qPrintable(joinTableName.isNull() ? "NULL" : joinTableName)); qPrintable(joinTableName.isNull() ? QStringLiteral("NULL") : joinTableName));
joinClassName = QString(); joinClassName = QString();
} }
} }
@ -559,11 +567,10 @@ QString SqlGeneratorBase::fromTableText(const QString &tableName,
QString SqlGeneratorBase::deleteRecords(const QString &tableName, const QString &where) QString SqlGeneratorBase::deleteRecords(const QString &tableName, const QString &where)
{ {
QString sql = QString(); QString sql = QStringLiteral("DELETE FROM ") + tableName;
if (where.isEmpty() || where.isNull())
sql = "DELETE FROM " + tableName; if (!where.isEmpty())
else sql.append(QStringLiteral(" WHERE ") + where);
sql = "DELETE FROM " + tableName + " WHERE " + where;
replaceTableNames(sql); replaceTableNames(sql);
@ -591,7 +598,7 @@ QString SqlGeneratorBase::selectCommand(const QString &tableName,
selectText = QString(); selectText = QString();
foreach (TableModel *t, tables) { foreach (TableModel *t, tables) {
if (!selectText.isEmpty()) if (!selectText.isEmpty())
selectText.append(", "); selectText.append(QStringLiteral(", "));
selectText.append(recordsPhrase(t)); selectText.append(recordsPhrase(t));
} }
} else { } else {
@ -603,13 +610,14 @@ QString SqlGeneratorBase::selectCommand(const QString &tableName,
QString whereText = createConditionalPhrase(where.data); QString whereText = createConditionalPhrase(where.data);
QString fromText = join(tableName, joins, &joinedOrders); QString fromText = join(tableName, joins, &joinedOrders);
QString sql = "SELECT " + selectText + " FROM " + fromText; QString sql = QStringLiteral("SELECT ") + selectText
+ QStringLiteral(" FROM ") + fromText;
if (whereText != "") if (whereText != QStringLiteral(""))
sql.append(" WHERE " + whereText); sql.append(QStringLiteral(" WHERE ") + whereText);
if (orderText != "") if (orderText != QStringLiteral(""))
sql.append(" ORDER BY " + orderText); sql.append(QStringLiteral(" ORDER BY ") + orderText);
// for (int i = 0; i < _database->model().count(); i++) // for (int i = 0; i < _database->model().count(); i++)
// sql = sql.replace(_database->model().at(i)->className() + ".", // sql = sql.replace(_database->model().at(i)->className() + ".",
@ -618,7 +626,7 @@ QString SqlGeneratorBase::selectCommand(const QString &tableName,
appendSkipTake(sql, skip, take); appendSkipTake(sql, skip, take);
replaceTableNames(sql); replaceTableNames(sql);
return sql + " "; return sql + QStringLiteral(" ");
} }
QString SqlGeneratorBase::selectCommand(const QString &tableName, QString SqlGeneratorBase::selectCommand(const QString &tableName,
@ -634,33 +642,34 @@ QString SqlGeneratorBase::selectCommand(const QString &tableName,
QString whereText = createConditionalPhrase(where.data); QString whereText = createConditionalPhrase(where.data);
QString fromText = join(tableName, joins, &joinedOrders); QString fromText = join(tableName, joins, &joinedOrders);
QString sql = "SELECT " + selectText + " FROM " + fromText; QString sql = QStringLiteral("SELECT ") + selectText
+ QStringLiteral(" FROM ") + fromText;
if (whereText != "") if (whereText != QStringLiteral(""))
sql.append(" WHERE " + whereText); sql.append(QStringLiteral(" WHERE ") + whereText);
for (int i = 0; i < _database->model().count(); i++) for (int i = 0; i < _database->model().count(); i++)
sql = sql.replace(_database->model().at(i)->className() + ".", sql = sql.replace(_database->model().at(i)->className() + QStringLiteral("."),
_database->model().at(i)->name() + "."); _database->model().at(i)->name() + QStringLiteral("."));
appendSkipTake(sql, skip, take); appendSkipTake(sql, skip, take);
replaceTableNames(sql); replaceTableNames(sql);
return sql + " "; return sql + QStringLiteral(" ");
} }
QString SqlGeneratorBase::deleteCommand(const QString &tableName, QString SqlGeneratorBase::deleteCommand(const QString &tableName,
const ConditionalPhrase &where) const ConditionalPhrase &where)
{ {
QString command = "DELETE FROM " + tableName; QString command = QStringLiteral("DELETE FROM ") + tableName;
QString whereText = createConditionalPhrase(where.data); QString whereText = createConditionalPhrase(where.data);
if (whereText != "") if (!whereText.isEmpty())
command.append(" WHERE " + whereText); command.append(QStringLiteral(" WHERE ") + whereText);
for (int i = 0; i < _database->model().count(); i++) for (int i = 0; i < _database->model().count(); i++)
command = command.replace(_database->model().at(i)->className() + ".", command = command.replace(_database->model().at(i)->className() + QStringLiteral("."),
_database->model().at(i)->name() + "."); _database->model().at(i)->name() + QStringLiteral("."));
replaceTableNames(command); replaceTableNames(command);
@ -673,21 +682,22 @@ QString SqlGeneratorBase::updateCommand(const QString &tableName,
{ {
QString assigmentTexts = QString(); QString assigmentTexts = QString();
foreach (PhraseData *d, assigments.data) { foreach (PhraseData *d, assigments.data) {
if (assigmentTexts != "") if (assigmentTexts != QStringLiteral(""))
assigmentTexts.append(", "); assigmentTexts.append(QStringLiteral(", "));
assigmentTexts.append(createConditionalPhrase(d)); assigmentTexts.append(createConditionalPhrase(d));
} }
QString whereText = createConditionalPhrase(where.data); QString whereText = createConditionalPhrase(where.data);
QString sql = "UPDATE " + tableName + " SET " + assigmentTexts; QString sql = QStringLiteral("UPDATE ") + tableName
+ QStringLiteral(" SET ") + assigmentTexts;
if (whereText != "") if (!whereText.isEmpty())
sql.append(" WHERE " + whereText); sql.append(QStringLiteral(" WHERE ") + whereText);
for (int i = 0; i < _database->model().count(); i++) for (int i = 0; i < _database->model().count(); i++)
sql = sql.replace(_database->model().at(i)->className() + ".", sql = sql.replace(_database->model().at(i)->className() + QStringLiteral("."),
_database->model().at(i)->name() + "."); _database->model().at(i)->name() + QStringLiteral("."));
removeTableNames(sql); removeTableNames(sql);
@ -700,16 +710,16 @@ QString SqlGeneratorBase::insertCommand(const QString &tableName, const Assignme
QString fieldNames; QString fieldNames;
QString values; QString values;
foreach (PhraseData *d, assigments.data) { foreach (PhraseData *d, assigments.data) {
if (fieldNames != "") if (!fieldNames.isEmpty())
fieldNames.append(", "); fieldNames.append(QStringLiteral(", "));
if (values != "") if (!values.isEmpty())
values.append(", "); values.append(QStringLiteral(", "));
fieldNames.append(d->left->fieldName); fieldNames.append(QString::fromUtf8(d->left->fieldName));
values.append(escapeValue(d->operand)); values.append(escapeValue(d->operand));
} }
return QString("INSERT INTO %1 (%2) VALUES (%3);") return QStringLiteral("INSERT INTO %1 (%2) VALUES (%3);")
.arg(tableName, fieldNames, values); .arg(tableName, fieldNames, values);
} }
@ -786,13 +796,16 @@ void SqlGeneratorBase::replaceTableNames(QString &command)
{ {
foreach (TableModel *m, _database->model()) foreach (TableModel *m, _database->model())
command = command command = command
.replace("[" + m->className() + "]", m->name()); .replace(QStringLiteral("[") + m->className()
+ QStringLiteral("]"), m->name());
} }
void SqlGeneratorBase::removeTableNames(QString &command) void SqlGeneratorBase::removeTableNames(QString &command)
{ {
foreach (TableModel *m, _database->model()) foreach (TableModel *m, _database->model())
command = command.replace("[" + m->className() + "].", ""); command = command.replace(QStringLiteral("[")
+ m->className()
+ QStringLiteral("]."), QStringLiteral(""));
} }
QString SqlGeneratorBase::dateTimePartName(const PhraseData::Condition &op) const QString SqlGeneratorBase::dateTimePartName(const PhraseData::Condition &op) const
@ -801,27 +814,27 @@ QString SqlGeneratorBase::dateTimePartName(const PhraseData::Condition &op) cons
case PhraseData::DatePartYear: case PhraseData::DatePartYear:
case PhraseData::AddYears: case PhraseData::AddYears:
case PhraseData::AddYearsDateTime: case PhraseData::AddYearsDateTime:
return "YEAR"; return QStringLiteral("YEAR");
case PhraseData::DatePartMonth: case PhraseData::DatePartMonth:
case PhraseData::AddMonths: case PhraseData::AddMonths:
case PhraseData::AddMonthsDateTime: case PhraseData::AddMonthsDateTime:
return "MONTH"; return QStringLiteral("MONTH");
case PhraseData::DatePartDay: case PhraseData::DatePartDay:
case PhraseData::AddDays: case PhraseData::AddDays:
case PhraseData::AddDaysDateTime: case PhraseData::AddDaysDateTime:
return "DAY"; return QStringLiteral("DAY");
case PhraseData::DatePartHour: case PhraseData::DatePartHour:
case PhraseData::AddHours: case PhraseData::AddHours:
case PhraseData::AddHoursDateTime: case PhraseData::AddHoursDateTime:
return "HOUR"; return QStringLiteral("HOUR");
case PhraseData::DatePartMinute: case PhraseData::DatePartMinute:
case PhraseData::AddMinutes: case PhraseData::AddMinutes:
case PhraseData::AddMinutesDateTime: case PhraseData::AddMinutesDateTime:
return "MINUTE"; return QStringLiteral("MINUTE");
case PhraseData::DatePartSecond: case PhraseData::DatePartSecond:
case PhraseData::AddSeconds: case PhraseData::AddSeconds:
case PhraseData::AddSecondsDateTime: case PhraseData::AddSecondsDateTime:
return "SECOND"; return QStringLiteral("SECOND");
default: default:
break; break;
@ -871,7 +884,7 @@ QString SqlGeneratorBase::dateTimePartName(const PhraseData::Condition &op) cons
QString SqlGeneratorBase::escapeValue(const QVariant &v) const QString SqlGeneratorBase::escapeValue(const QVariant &v) const
{ {
if (v.type() == QVariant::String && v.toString().isEmpty()) if (v.type() == QVariant::String && v.toString().isEmpty())
return "''"; return QStringLiteral("''");
QString serialized = _serializer->serialize(v); QString serialized = _serializer->serialize(v);
if (serialized.isEmpty()) { if (serialized.isEmpty()) {
@ -882,7 +895,7 @@ QString SqlGeneratorBase::escapeValue(const QVariant &v) const
if (v.type() == QVariant::List) if (v.type() == QVariant::List)
return serialized; return serialized;
return "'" + serialized + "'"; return QStringLiteral("'") + serialized + QStringLiteral("'");
} }
QVariant SqlGeneratorBase::unescapeValue(const QMetaType::Type &type, QVariant SqlGeneratorBase::unescapeValue(const QMetaType::Type &type,
@ -909,7 +922,7 @@ QString SqlGeneratorBase::phrase(const PhraseData *d) const
break; break;
case PhraseData::WithOther: case PhraseData::WithOther:
ret = phrase(d->left) + " " + operatorString(d->operatorCond) + " " ret = phrase(d->left) + QStringLiteral(" ") + operatorString(d->operatorCond) + QStringLiteral(" ")
+ phrase(d->right); + phrase(d->right);
break; break;
@ -919,7 +932,7 @@ QString SqlGeneratorBase::phrase(const PhraseData *d) const
} }
if (d->operatorCond == PhraseData::And || d->operatorCond == PhraseData::Or) if (d->operatorCond == PhraseData::And || d->operatorCond == PhraseData::Or)
ret = "(" + ret + ")"; ret = QStringLiteral("(") + ret + QStringLiteral(")");
return ret; return ret;
} }
@ -929,63 +942,63 @@ SqlGeneratorBase::operatorString(const PhraseData::Condition &cond) const
{ {
switch (cond) { switch (cond) {
case PhraseData::Equal: case PhraseData::Equal:
return "="; return QStringLiteral("=");
case PhraseData::NotEqual: case PhraseData::NotEqual:
return "<>"; return QStringLiteral("<>");
case PhraseData::Less: case PhraseData::Less:
return "<"; return QStringLiteral("<");
case PhraseData::Greater: case PhraseData::Greater:
return ">"; return QStringLiteral(">");
case PhraseData::LessEqual: case PhraseData::LessEqual:
return "<="; return QStringLiteral("<=");
case PhraseData::GreaterEqual: case PhraseData::GreaterEqual:
return ">="; return QStringLiteral(">=");
case PhraseData::Null: case PhraseData::Null:
return "IS NULL"; return QStringLiteral("IS NULL");
case PhraseData::NotNull: case PhraseData::NotNull:
return "IS NOT NULL"; return QStringLiteral("IS NOT NULL");
case PhraseData::In: case PhraseData::In:
return "IN"; return QStringLiteral("IN");
case PhraseData::NotIn: case PhraseData::NotIn:
return "NOT IN"; return QStringLiteral("NOT IN");
case PhraseData::And: case PhraseData::And:
return "AND"; return QStringLiteral("AND");
case PhraseData::Or: case PhraseData::Or:
return "OR"; return QStringLiteral("OR");
case PhraseData::Like: case PhraseData::Like:
return "LIKE"; return QStringLiteral("LIKE");
case PhraseData::NotLike: case PhraseData::NotLike:
return "NOT LIKE"; return QStringLiteral("NOT LIKE");
case PhraseData::Add: case PhraseData::Add:
return "+"; return QStringLiteral("+");
case PhraseData::Minus: case PhraseData::Minus:
return "-"; return QStringLiteral("-");
case PhraseData::Multiple: case PhraseData::Multiple:
return "*"; return QStringLiteral("*");
case PhraseData::Divide: case PhraseData::Divide:
return "/"; return QStringLiteral("/");
// case PhraseData::Set: // case PhraseData::Set:
// return "="; // return QStringLiteral("=");
// case PhraseData::Append: // case PhraseData::Append:
// return ","; // return QStringLiteral(",");
case PhraseData::Between: case PhraseData::Between:
return "BETWEEN"; return QStringLiteral("BETWEEN");
case PhraseData::Mod: case PhraseData::Mod:
return "MOD"; return QStringLiteral("MOD");
default: default:
qDebug() << "Unsupported" << cond; qDebug() << "Unsupported" << cond;
return QString("<FAIL cond> %1").arg(cond); return QStringLiteral("<FAIL cond> %1").arg(cond);
} }
} }
@ -998,7 +1011,7 @@ void SqlGeneratorBase::appendSkipTake(QString &sql, int skip, int take)
QString SqlGeneratorBase::primaryKeyConstraint(const TableModel *table) const QString SqlGeneratorBase::primaryKeyConstraint(const TableModel *table) const
{ {
return QString("CONSTRAINT pk_%1 PRIMARY KEY (%2)") return QStringLiteral("CONSTRAINT pk_%1 PRIMARY KEY (%2)")
.arg(table->name(), table->primaryKey()); .arg(table->name(), table->primaryKey());
} }
@ -1041,44 +1054,47 @@ QString SqlGeneratorBase::createConditionalPhrase(const PhraseData *d) const
.arg(d->operand.toString(), createConditionalPhrase(d->left)); .arg(d->operand.toString(), createConditionalPhrase(d->left));
else */if (op == PhraseData::Between) { else */if (op == PhraseData::Between) {
QVariantList list = d->operand.toList(); QVariantList list = d->operand.toList();
ret = QString("%1 BETWEEN %2 AND %3") ret = QStringLiteral("%1 BETWEEN %2 AND %3")
.arg(createConditionalPhrase(d->left), escapeValue(list.at(0)), escapeValue(list.at(1))); .arg(createConditionalPhrase(d->left), escapeValue(list.at(0)), escapeValue(list.at(1)));
} else if (op == PhraseData::DatePartYear) } else if (op == PhraseData::DatePartYear)
ret = QString("DATEPART(year, %1)") ret = QStringLiteral("DATEPART(year, %1)")
.arg(d->operand.toString()); .arg(d->operand.toString());
else if (op == PhraseData::DatePartMonth) else if (op == PhraseData::DatePartMonth)
ret = QString("DATEPART(month, %1)") ret = QStringLiteral("DATEPART(month, %1)")
.arg(d->operand.toString()); .arg(d->operand.toString());
else if (op == PhraseData::DatePartDay) else if (op == PhraseData::DatePartDay)
ret = QString("DATEPART(day, %1)") ret = QStringLiteral("DATEPART(day, %1)")
.arg(d->operand.toString()); .arg(d->operand.toString());
else if (op == PhraseData::DatePartHour) else if (op == PhraseData::DatePartHour)
ret = QString("DATEPART(hour, %1)") ret = QStringLiteral("DATEPART(hour, %1)")
.arg(d->operand.toString()); .arg(d->operand.toString());
else if (op == PhraseData::DatePartMinute) else if (op == PhraseData::DatePartMinute)
ret = QString("DATEPART(minute, %1)") ret = QStringLiteral("DATEPART(minute, %1)")
.arg(d->operand.toString()); .arg(d->operand.toString());
else if (op == PhraseData::DatePartMilisecond) else if (op == PhraseData::DatePartMilisecond)
ret = QString("DATEPART(milisecond, %1)") ret = QStringLiteral("DATEPART(milisecond, %1)")
.arg(d->operand.toString()); .arg(d->operand.toString());
else else
ret = createConditionalPhrase(d->left) + " " + operatorString(op) + " " ret = createConditionalPhrase(d->left) + QStringLiteral(" ")
+ escapeValue(d->operand); + operatorString(op) + QStringLiteral(" ")
+ escapeValue(d->operand);
break; break;
case PhraseData::WithOther: case PhraseData::WithOther:
ret = createConditionalPhrase(d->left) + " " + operatorString(op) + " " ret = createConditionalPhrase(d->left) + QStringLiteral(" ")
+ operatorString(op) + QStringLiteral(" ")
+ createConditionalPhrase(d->right); + createConditionalPhrase(d->right);
break; break;
case PhraseData::WithoutOperand: case PhraseData::WithoutOperand:
ret = createConditionalPhrase(d->left) + " " + operatorString(op); ret = createConditionalPhrase(d->left) + QStringLiteral(" ")
+ operatorString(op);
break; break;
} }
if (d->operatorCond == PhraseData::And || d->operatorCond == PhraseData::Or) if (d->operatorCond == PhraseData::And || d->operatorCond == PhraseData::Or)
ret = "(" + ret + ")"; ret = QStringLiteral("(") + ret + QStringLiteral(")");
return ret; return ret;
} }
@ -1087,11 +1103,11 @@ QString SqlGeneratorBase::createOrderPhrase(const PhraseList &ph)
{ {
QString ret = QString(); QString ret = QString();
foreach (const PhraseData *d, ph.data) { foreach (const PhraseData *d, ph.data) {
if (ret != "") if (!ret.isEmpty())
ret.append(", "); ret.append(QStringLiteral(", "));
ret.append(d->toString()); ret.append(d->toString());
if (d->isNot) if (d->isNot)
ret.append(" DESC"); ret.append(QStringLiteral(" DESC"));
} }
return ret; return ret;
@ -1101,8 +1117,8 @@ QString SqlGeneratorBase::createFieldPhrase(const PhraseList &ph)
{ {
QString ret = QString(); QString ret = QString();
foreach (const PhraseData *d, ph.data) { foreach (const PhraseData *d, ph.data) {
if (ret != "") if (!ret.isEmpty())
ret.append(", "); ret.append(QStringLiteral(", "));
ret.append(d->toString()); ret.append(d->toString());
if (d->isNot) if (d->isNot)
qDebug() << "Operator ! is ignored in fields phrase"; qDebug() << "Operator ! is ignored in fields phrase";
@ -1113,11 +1129,11 @@ QString SqlGeneratorBase::createFieldPhrase(const PhraseList &ph)
void SqlGeneratorBase::createInsertPhrase(const AssignmentPhraseList &ph, QString &fields, QString &values) void SqlGeneratorBase::createInsertPhrase(const AssignmentPhraseList &ph, QString &fields, QString &values)
{ {
foreach (PhraseData *d, ph.data) { foreach (PhraseData *d, ph.data) {
if (fields != "") if (!fields.isEmpty())
fields.append(", "); fields.append(QStringLiteral(", "));
if (values != "") if (!values.isEmpty())
values.append(", "); values.append(QStringLiteral(", "));
switch (d->type) { switch (d->type) {
case PhraseData::WithVariant: case PhraseData::WithVariant:

View File

@ -79,7 +79,7 @@ QString SqliteGenerator::fieldType(FieldModel *field)
case QMetaType::QString: case QMetaType::QString:
if(field->length) if(field->length)
return QString::fromUtf8("VARCHAR(%1)").arg(field->length); return QStringLiteral("VARCHAR(%1)").arg(field->length);
else else
return QStringLiteral("TEXT"); return QStringLiteral("TEXT");
default: default:
@ -183,7 +183,7 @@ QStringList SqliteGenerator::diff(TableModel *oldTable, TableModel *newTable)
ret.append(QStringLiteral("ALTER TABLE ") + newTable->name() + QStringLiteral(" RENAME TO sqlitestudio_temp_table;")); ret.append(QStringLiteral("ALTER TABLE ") + newTable->name() + QStringLiteral(" RENAME TO sqlitestudio_temp_table;"));
ret.append(newTableSql); ret.append(newTableSql);
ret.append(QString::fromUtf8("INSERT INTO %1 ( %2 ) SELECT %2 FROM sqlitestudio_temp_table;") ret.append(QStringLiteral("INSERT INTO %1 ( %2 ) SELECT %2 FROM sqlitestudio_temp_table;")
.arg(newTable->name(), columns)); .arg(newTable->name(), columns));
ret.append(QStringLiteral("DROP TABLE sqlitestudio_temp_table;")); ret.append(QStringLiteral("DROP TABLE sqlitestudio_temp_table;"));
return ret; return ret;
@ -191,11 +191,11 @@ QStringList SqliteGenerator::diff(TableModel *oldTable, TableModel *newTable)
void SqliteGenerator::appendSkipTake(QString &sql, int skip, int take) void SqliteGenerator::appendSkipTake(QString &sql, int skip, int take)
{ {
if (take > 0 && skip > 0) { if (take > 0 && skip > 0) {
sql.append(QString::fromUtf8(" LIMIT %1 OFFSET %2") sql.append(QStringLiteral(" LIMIT %1 OFFSET %2")
.arg(take) .arg(take)
.arg(skip)); .arg(skip));
} else if (take > 0) { } else if (take > 0) {
sql.append(QString::fromUtf8(" LIMIT %1").arg(take)); sql.append(QStringLiteral(" LIMIT %1").arg(take));
} }
} }
@ -229,7 +229,7 @@ QString SqliteGenerator::createConditionalPhrase(const PhraseData *d) const
case PhraseData::AddMonths: case PhraseData::AddMonths:
case PhraseData::AddDays: { case PhraseData::AddDays: {
int i = d->operand.toInt(); int i = d->operand.toInt();
return QString::fromUtf8("DATE(%1,'%2 %3')") return QStringLiteral("DATE(%1,'%2 %3')")
.arg(createConditionalPhrase(d->left), .arg(createConditionalPhrase(d->left),
(i < 0 ? QStringLiteral("") : QStringLiteral("+")) + QString::number(i), (i < 0 ? QStringLiteral("") : QStringLiteral("+")) + QString::number(i),
dateTimePartName(op)); dateTimePartName(op));
@ -239,7 +239,7 @@ QString SqliteGenerator::createConditionalPhrase(const PhraseData *d) const
case PhraseData::AddMinutes: case PhraseData::AddMinutes:
case PhraseData::AddSeconds: { case PhraseData::AddSeconds: {
int i = d->operand.toInt(); int i = d->operand.toInt();
return QString::fromUtf8("TIME(%1,'%2 %3')") return QStringLiteral("TIME(%1,'%2 %3')")
.arg(createConditionalPhrase(d->left), .arg(createConditionalPhrase(d->left),
(i < 0 ? QStringLiteral("") : QStringLiteral("+")) + QString::number(i), (i < 0 ? QStringLiteral("") : QStringLiteral("+")) + QString::number(i),
dateTimePartName(op)); dateTimePartName(op));
@ -252,7 +252,7 @@ QString SqliteGenerator::createConditionalPhrase(const PhraseData *d) const
case PhraseData::AddMinutesDateTime: case PhraseData::AddMinutesDateTime:
case PhraseData::AddSecondsDateTime: { case PhraseData::AddSecondsDateTime: {
int i = d->operand.toInt(); int i = d->operand.toInt();
return QString::fromUtf8("DATETIME(%1,'%2 %3')") return QStringLiteral("DATETIME(%1,'%2 %3')")
.arg(createConditionalPhrase(d->left), .arg(createConditionalPhrase(d->left),
(i < 0 ? QStringLiteral("") : QStringLiteral("+")) + QString::number(i), (i < 0 ? QStringLiteral("") : QStringLiteral("+")) + QString::number(i),
dateTimePartName(op)); dateTimePartName(op));
@ -265,27 +265,27 @@ QString SqliteGenerator::createConditionalPhrase(const PhraseData *d) const
if (d->type == PhraseData::WithoutOperand) { if (d->type == PhraseData::WithoutOperand) {
switch (op) { switch (op) {
case PhraseData::DatePartYear: case PhraseData::DatePartYear:
return QString::fromUtf8("CAST(strftime('%Y', %1) AS INT)") return QStringLiteral("CAST(strftime('%Y', %1) AS INT)")
.arg(createConditionalPhrase(d->left)); .arg(createConditionalPhrase(d->left));
case PhraseData::DatePartMonth: case PhraseData::DatePartMonth:
return QString::fromUtf8("CAST(strftime('%m', %1) AS INT)") return QStringLiteral("CAST(strftime('%m', %1) AS INT)")
.arg(createConditionalPhrase(d->left)); .arg(createConditionalPhrase(d->left));
case PhraseData::DatePartDay: case PhraseData::DatePartDay:
return QString::fromUtf8("CAST(strftime('%d', %1) AS INT)") return QStringLiteral("CAST(strftime('%d', %1) AS INT)")
.arg(createConditionalPhrase(d->left)); .arg(createConditionalPhrase(d->left));
case PhraseData::DatePartHour: case PhraseData::DatePartHour:
return QString::fromUtf8("CAST(strftime('%H', %1) AS INT)") return QStringLiteral("CAST(strftime('%H', %1) AS INT)")
.arg(createConditionalPhrase(d->left)); .arg(createConditionalPhrase(d->left));
case PhraseData::DatePartMinute: case PhraseData::DatePartMinute:
return QString::fromUtf8("CAST(strftime('%M', %1) AS INT)") return QStringLiteral("CAST(strftime('%M', %1) AS INT)")
.arg(createConditionalPhrase(d->left)); .arg(createConditionalPhrase(d->left));
case PhraseData::DatePartSecond: case PhraseData::DatePartSecond:
return QString::fromUtf8("CAST(strftime('%S', %1) AS INT)") return QStringLiteral("CAST(strftime('%S', %1) AS INT)")
.arg(createConditionalPhrase(d->left)); .arg(createConditionalPhrase(d->left));
// case PhraseData::DatePartMilisecond: // case PhraseData::DatePartMilisecond:

View File

@ -35,86 +35,77 @@ SqlServerGenerator::SqlServerGenerator(Database *parent)
QString SqlServerGenerator::masterDatabaseName(QString databaseName) QString SqlServerGenerator::masterDatabaseName(QString databaseName)
{ {
return databaseName.replace( return databaseName.replace(
QRegularExpression("DATABASE\\=(\\w+)", QRegularExpression(QStringLiteral("DATABASE\\=(\\w+)"),
QRegularExpression::CaseInsensitiveOption), QRegularExpression::CaseInsensitiveOption),
"DATABASE="); QStringLiteral("DATABASE="));
} }
QString SqlServerGenerator::fieldType(FieldModel *field) QString SqlServerGenerator::fieldType(FieldModel *field)
{ {
QString dbType;
switch (field->type) { switch (field->type) {
case QMetaType::Bool: case QMetaType::Bool:
dbType = "BIT"; return QStringLiteral("BIT");
break;
case QMetaType::Char: case QMetaType::Char:
case QMetaType::QChar: case QMetaType::QChar:
dbType = "CHAR(1)"; return QStringLiteral("CHAR(1)");
break;
case QMetaType::SChar: case QMetaType::SChar:
case QMetaType::UChar: case QMetaType::UChar:
return "tinyint"; return QStringLiteral("tinyint");
case QMetaType::Short: case QMetaType::Short:
case QMetaType::UShort: case QMetaType::UShort:
return "smallint"; return QStringLiteral("smallint");
case QMetaType::UInt: case QMetaType::UInt:
case QMetaType::Int: case QMetaType::Int:
dbType = "INT";
if (field->isAutoIncrement) if (field->isAutoIncrement)
dbType += " IDENTITY(1,1)"; return QStringLiteral("INT IDENTITY(1,1)");
break; else
return QStringLiteral("INT");
case QMetaType::Long: case QMetaType::Long:
case QMetaType::ULong: case QMetaType::ULong:
case QMetaType::LongLong: case QMetaType::LongLong:
case QMetaType::ULongLong: case QMetaType::ULongLong:
return "bigint"; return QStringLiteral("bigint");
case QMetaType::Float: case QMetaType::Float:
return "FLOAT(24)"; return QStringLiteral("FLOAT(24)");
case QMetaType::Double: case QMetaType::Double:
return "REAL"; return QStringLiteral("REAL");
case QMetaType::QBitArray: case QMetaType::QBitArray:
case QMetaType::QByteArray: case QMetaType::QByteArray:
dbType = "VARBINARY";
if (field->length) if (field->length)
dbType.append(" (" + QString::number(field->length) + ")"); return QStringLiteral("VARBINARY (") + QString::number(field->length) + QStringLiteral(")");
else else
dbType.append(" (MAX)"); return QStringLiteral("VARBINARY (MAX)");
break; break;
case QMetaType::QDate: case QMetaType::QDate:
dbType = "DATE"; return QStringLiteral("DATE");
break;
case QMetaType::QDateTime: case QMetaType::QDateTime:
dbType = "DATETIME"; return QStringLiteral("DATETIME");
break;
case QMetaType::QTime: case QMetaType::QTime:
dbType = "TIME"; return QStringLiteral("TIME");
break;
case QMetaType::QPoint: case QMetaType::QPoint:
case QMetaType::QPointF: case QMetaType::QPointF:
dbType = "TEXT"; return QStringLiteral("TEXT");
break;
case QMetaType::QString: case QMetaType::QString:
if (field->length) if (field->length)
dbType = QString("NVARCHAR(%1)").arg(field->length); return QStringLiteral("NVARCHAR(%1)").arg(field->length);
else else
dbType = "NVARCHAR(MAX)"; return QStringLiteral("NVARCHAR(MAX)");
break;
case QMetaType::QUuid: case QMetaType::QUuid:
dbType = "UNIQUEIDENTIFIER"; return QStringLiteral("UNIQUEIDENTIFIER");
break;
case QMetaType::QPolygon: case QMetaType::QPolygon:
case QMetaType::QPolygonF: case QMetaType::QPolygonF:
@ -131,14 +122,12 @@ QString SqlServerGenerator::fieldType(FieldModel *field)
case QMetaType::QJsonObject: case QMetaType::QJsonObject:
case QMetaType::QJsonDocument: case QMetaType::QJsonDocument:
case QMetaType::QUrl: case QMetaType::QUrl:
return "TEXT"; return QStringLiteral("TEXT");
default: default:
// Q_UNREACHABLE(); // Q_UNREACHABLE();
dbType = QString(); return QString();
} }
return dbType;
} }
QString SqlServerGenerator::diff(FieldModel *oldField, FieldModel *newField) QString SqlServerGenerator::diff(FieldModel *oldField, FieldModel *newField)
@ -149,12 +138,12 @@ QString SqlServerGenerator::diff(FieldModel *oldField, FieldModel *newField)
return sql; return sql;
if (!newField) { if (!newField) {
sql = "DROP COLUMN " + oldField->name; sql = QStringLiteral("DROP COLUMN ") + oldField->name;
} else { } else {
if (oldField) if (oldField)
sql = "MODIFY COLUMN "; sql = QStringLiteral("MODIFY COLUMN ");
else else
sql = "ADD "; sql = QStringLiteral("ADD ");
sql.append(fieldDeclare(newField)); sql.append(fieldDeclare(newField));
} }
@ -181,7 +170,7 @@ QString SqlServerGenerator::escapeValue(const QVariant &v) const
// case QVariant::JsonObject: // case QVariant::JsonObject:
// case QVariant::JsonDocument: // case QVariant::JsonDocument:
case QVariant::Url: case QVariant::Url:
return "N" + SqlGeneratorBase::escapeValue(v); return QStringLiteral("N") + SqlGeneratorBase::escapeValue(v);
// case QVariant::Point: { // case QVariant::Point: {
// QPoint pt = v.toPoint(); // QPoint pt = v.toPoint();
@ -195,18 +184,17 @@ QString SqlServerGenerator::escapeValue(const QVariant &v) const
// } // }
case QVariant::Time: case QVariant::Time:
return "'" + v.toTime().toString("HH:mm:ss") + "'"; return v.toTime().toString(QStringLiteral("'HH:mm:ss'"));
case QVariant::Date: case QVariant::Date:
return "'" + v.toDate().toString("yyyy-MM-dd") + "'"; return v.toDate().toString(QStringLiteral("'yyyy-MM-dd'"));
case QVariant::DateTime: case QVariant::DateTime:
return "'" + v.toDateTime().toString("yyyy-MM-dd HH:mm:ss") + "'"; return v.toDateTime().toString(QStringLiteral("'yyyy-MM-dd HH:mm:ss'"));
default: default:
break; return SqlGeneratorBase::escapeValue(v);
} }
return SqlGeneratorBase::escapeValue(v);
} }
QVariant SqlServerGenerator::unescapeValue(const QMetaType::Type &type, const QVariant &dbValue) QVariant SqlServerGenerator::unescapeValue(const QMetaType::Type &type, const QVariant &dbValue)
@ -226,12 +214,12 @@ QVariant SqlServerGenerator::unescapeValue(const QMetaType::Type &type, const QV
void SqlServerGenerator::appendSkipTake(QString &sql, int skip, int take) void SqlServerGenerator::appendSkipTake(QString &sql, int skip, int take)
{ {
if (skip != -1) if (skip != -1)
sql.append(QString(" OFFSET %1 ROWS") sql.append(QStringLiteral(" OFFSET %1 ROWS")
.arg(skip)); .arg(skip));
if (take > 0) if (take > 0)
sql.append(QString(" FETCH %2 %1 ROWS ONLY") sql.append(QStringLiteral(" FETCH %2 %1 ROWS ONLY")
.arg(take) .arg(take)
.arg(skip > 1 ? "NEXT" : "FIRST")); .arg(skip > 1 ? QStringLiteral("NEXT") : QStringLiteral("FIRST")));
} }
QString SqlServerGenerator::createConditionalPhrase(const PhraseData *d) const QString SqlServerGenerator::createConditionalPhrase(const PhraseData *d) const
@ -260,7 +248,7 @@ QString SqlServerGenerator::createConditionalPhrase(const PhraseData *d) const
case PhraseData::AddMinutesDateTime: case PhraseData::AddMinutesDateTime:
case PhraseData::AddSeconds: case PhraseData::AddSeconds:
case PhraseData::AddSecondsDateTime: case PhraseData::AddSecondsDateTime:
return QString("DATEADD(%3, %2, %1)") return QStringLiteral("DATEADD(%3, %2, %1)")
.arg(createConditionalPhrase(d->left), .arg(createConditionalPhrase(d->left),
d->operand.toString(), d->operand.toString(),
SqlGeneratorBase::dateTimePartName(op)); SqlGeneratorBase::dateTimePartName(op));
@ -278,7 +266,7 @@ QString SqlServerGenerator::createConditionalPhrase(const PhraseData *d) const
case PhraseData::DatePartHour: case PhraseData::DatePartHour:
case PhraseData::DatePartMinute: case PhraseData::DatePartMinute:
case PhraseData::DatePartSecond: case PhraseData::DatePartSecond:
return QString("DATEPART(%2, %1)") return QStringLiteral("DATEPART(%2, %1)")
.arg(createConditionalPhrase(d->left), .arg(createConditionalPhrase(d->left),
SqlGeneratorBase::dateTimePartName(op)); SqlGeneratorBase::dateTimePartName(op));

View File

@ -73,7 +73,7 @@ PhraseData &PhraseData::operator =(PhraseData &other)
QString PhraseData::toString() const QString PhraseData::toString() const
{ {
return QString("[%1].%2").arg(className, fieldName); return QString(QStringLiteral("[%1].%2")).arg(className, fieldName);
} }
void PhraseData::cleanUp() void PhraseData::cleanUp()

View File

@ -335,10 +335,10 @@ QString TableModel::toString() const
{ {
QStringList sl; QStringList sl;
foreach (FieldModel *f, _fields) foreach (FieldModel *f, _fields)
sl.append(f->name + " " + QVariant::typeToName(f->type)); sl.append(f->name + QStringLiteral(" ") + QVariant::typeToName(f->type));
QString ret = QString("%1 (%2)") QString ret = QStringLiteral("%1 (%2)")
.arg(_name, sl.join(", ")); .arg(_name, sl.join(QStringLiteral(", ")));
return ret; return ret;
} }

View File

@ -75,7 +75,7 @@ void DbGeography::setLatitude(qreal latitude)
} }
DbGeography::operator QVariant() DbGeography::operator QVariant()
{ {
return QVariant::fromValue(QString("%1,%2").arg(longitude()).arg(latitude())); return QVariant::fromValue(QStringLiteral("%1,%2").arg(longitude()).arg(latitude()));
} }
NUT_END_NAMESPACE NUT_END_NAMESPACE

View File

@ -8,7 +8,7 @@
#define PRINT(x) #define PRINT(x)
//qDebug() << (#x "=") << (x); //qDebug() << (#x "=") << (x);
#define TIC() QElapsedTimer timer; timer.start() #define TIC() QElapsedTimer timer; timer.start()
#define TOC() qDebug() << QString("Elapsed time: %1ms for %2") \ #define TOC() qDebug() << QStringLiteral("Elapsed time: %1ms for %2") \
.arg(timer.elapsed() / 1000.) \ .arg(timer.elapsed() / 1000.) \
.arg(__func__) .arg(__func__)

View File

@ -135,7 +135,7 @@ void GeneratorsTest::cleanupTestCase()
QString p = "\n| Type | Sqlite | MySql | Postgresql| Ms Sql server |" QString p = "\n| Type | Sqlite | MySql | Postgresql| Ms Sql server |"
"\n|--------|--------|--------|--------|--------|"; "\n|--------|--------|--------|--------|--------|";
for (i = table.constBegin(); i != table.constEnd(); ++i) { for (i = table.constBegin(); i != table.constEnd(); ++i) {
p.append(QString("\n|%1|%2|%3|%4|%5|") p.append(QStringLiteral("\n|%1|%2|%3|%4|%5|")
.arg(i.key(), i.value().sqlite, i.value().mysql, .arg(i.key(), i.value().sqlite, i.value().mysql,
i.value().psql, i.value().mssql)); i.value().psql, i.value().mssql));
} }