This commit is contained in:
Hamed Masafi 2019-02-10 17:49:32 +03:30
commit c96ead047b
24 changed files with 155 additions and 203 deletions

View File

@ -53,7 +53,7 @@ qulonglong DatabasePrivate::lastId = 0;
QMap<QString, DatabaseModel> DatabasePrivate::allTableMaps;
DatabasePrivate::DatabasePrivate(Database *parent) : q_ptr(parent),
port(0), sqlGenertor(0), changeLogs(0),
port(0), sqlGenertor(nullptr), changeLogs(nullptr),
isDatabaseNew(false)
{
}
@ -74,7 +74,7 @@ bool DatabasePrivate::open(bool update)
db.setUserName(userName);
db.setPassword(password);
if (driver.toLower().startsWith("qsqlite")
if (driver.startsWith("qsqlite", Qt::CaseInsensitive)
&& !QFile::exists(databaseName)) {
//Force to execute update database
isDatabaseNew = true;
@ -108,10 +108,10 @@ bool DatabasePrivate::open(bool update)
isDatabaseNew = true;
return open(update);
} else {
qWarning("Unknown error detecting change logs, %s",
db.lastError().text().toLatin1().data());
}
qWarning("Unknown error detecting change logs, %s",
db.lastError().text().toLatin1().data());
}
return false;
}
@ -335,7 +335,7 @@ bool DatabasePrivate::putModelToDatabase()
DatabaseModel current = currentModel;
/*current.remove(__CHANGE_LOG_TABLE_NAME)*/;
ChangeLogTable *changeLog = new ChangeLogTable();
auto *changeLog = new ChangeLogTable();
changeLog->setData(QJsonDocument(current.toJson()).toJson());
changeLog->setVersion(current.version());
changeLogs->append(changeLog);
@ -358,7 +358,7 @@ bool DatabasePrivate::putModelToDatabase()
void DatabasePrivate::createChangeLogs()
{
// currentModel.model("change_log")
QString diff = sqlGenertor->diff(0, currentModel.tableByName("__change_log"));
QString diff = sqlGenertor->diff(nullptr, currentModel.tableByName("__change_log"));
db.exec(diff);
}
@ -407,8 +407,7 @@ Database::~Database()
if (d->db.isOpen())
d->db.close();
if (d_ptr)
delete d_ptr;
delete d_ptr;
}
QString Database::databaseName() const
@ -574,9 +573,9 @@ bool Database::open(bool updateDatabase)
qFatal("Sql generator for driver %s not found",
driver().toLatin1().constData());
return false;
} else {
return d->open(updateDatabase);
}
return d->open(updateDatabase);
}
void Database::close()
@ -585,7 +584,7 @@ void Database::close()
d->db.close();
}
QSqlQuery Database::exec(QString sql)
QSqlQuery Database::exec(const QString &sql)
{
Q_D(Database);

View File

@ -52,7 +52,7 @@ public:
bool open(bool updateDatabase);
void close();
QSqlQuery exec(QString sql);
QSqlQuery exec(const QString& sql);
int saveChanges(bool cleanUp = false);
void cleanUp();

View File

@ -57,10 +57,6 @@ DatabaseModel::DatabaseModel(const QJsonObject &json) :
}
}
DatabaseModel::~DatabaseModel()
{
}
TableModel *DatabaseModel::tableByName(QString tableName) const
{
for(int i = 0; i < size(); i++){
@ -72,7 +68,7 @@ TableModel *DatabaseModel::tableByName(QString tableName) const
// qWarning("Table with name '%s' not found in model",
// qUtf8Printable(tableName));
return 0;
return nullptr;
}
TableModel *DatabaseModel::tableByClassName(QString className) const
@ -108,19 +104,19 @@ bool DatabaseModel::operator ==(const DatabaseModel &other) const
return true;
}
DatabaseModel DatabaseModel::operator +(const DatabaseModel &other)
{
DatabaseModel model;
DatabaseModel::const_iterator i;
//DatabaseModel DatabaseModel::operator +(const DatabaseModel &other)
//{
// DatabaseModel model;
// DatabaseModel::const_iterator i;
for (i = constBegin(); i != constEnd(); ++i)
model.append(*i);
// for (i = constBegin(); i != constEnd(); ++i)
// model.append(*i);
for (i = other.constBegin(); i != other.constEnd(); ++i)
model.append(*i);
// for (i = other.constBegin(); i != other.constEnd(); ++i)
// model.append(*i);
return model;
}
// return model;
//}
QJsonObject DatabaseModel::toJson() const
{
@ -148,13 +144,13 @@ RelationModel *DatabaseModel::relationByClassNames(const QString &masterClassNam
TableModel *childTable = tableByClassName(childClassName);
if(!childTable)
return 0;
return nullptr;
foreach (RelationModel *rel, childTable->foregionKeys())
if(rel->masterClassName == masterClassName)
return rel;
return 0;
return nullptr;
}
RelationModel *DatabaseModel::relationByTableNames(const QString &masterTableName, const QString &childTableName)
@ -162,13 +158,13 @@ RelationModel *DatabaseModel::relationByTableNames(const QString &masterTableNam
TableModel *childTable = tableByName(childTableName);
if(!childTable)
return 0;
return nullptr;
foreach (RelationModel *rel, childTable->foregionKeys())
if(rel->masterTable->name() == masterTableName)
return rel;
return 0;
return nullptr;
}
DatabaseModel DatabaseModel::fromJson(QJsonObject &json)
@ -236,7 +232,21 @@ void DatabaseModel::deleteAllModels()
// qDeleteAll(i.value());
}
// qDeleteAll(_models.values());
_models.clear();
_models.clear();
}
DatabaseModel operator +(const DatabaseModel &l, const DatabaseModel &r)
{
DatabaseModel model;
DatabaseModel::const_iterator i;
for (i = r.constBegin(); i != r.constEnd(); ++i)
model.append(*i);
for (i = l.constBegin(); i != l.constEnd(); ++i)
model.append(*i);
return model;
}
NUT_END_NAMESPACE

View File

@ -43,7 +43,7 @@ public:
DatabaseModel(const QString &name = QString());
DatabaseModel(const DatabaseModel &other);
DatabaseModel(const QJsonObject &json);
~DatabaseModel();
~DatabaseModel() = default;
TableModel *tableByName(QString tableName) const;
TableModel *tableByClassName(QString className) const;
@ -54,7 +54,7 @@ public:
const QString &childClassName);
bool operator==(const DatabaseModel &other) const;
DatabaseModel operator +(const DatabaseModel &other);
// DatabaseModel operator +(const DatabaseModel &other);
Q_DECL_DEPRECATED
static DatabaseModel fromJson(QJsonObject &json);
@ -73,6 +73,8 @@ public:
static void deleteAllModels();
};
DatabaseModel operator +(const DatabaseModel &l, const DatabaseModel &r);
NUT_END_NAMESPACE
#endif // DATABASEMODEL_H

View File

@ -172,7 +172,7 @@ public: \
#define NUT_IMPLEMENT_CHILD_TABLE(class, type, n) \
type *class::n##Table(){ \
static type *f = new type(); \
static auto f = new type(); \
return f; \
} \
NUT_WRAP_NAMESPACE(TableSet)<type> *class::n(){ \

View File

@ -36,50 +36,50 @@ QString MySqlGenerator::fieldType(FieldModel *field)
QString dbType;
switch (field->type) {
case QVariant::Bool:
case QMetaType::Bool:
dbType = "BOOLEAN";
break;
case QVariant::ByteArray:
case QMetaType::QByteArray:
dbType = "BLOB";
break;
case QVariant::DateTime:
case QMetaType::QDateTime:
dbType = "DATETIME";
break;
case QVariant::Date:
case QMetaType::QDate:
dbType = "DATE";
break;
case QVariant::Time:
case QMetaType::QTime:
dbType = "TIME";
break;
case QVariant::Double:
case QMetaType::Double:
dbType = "REAL";
break;
case QVariant::Int:
case QMetaType::Int:
dbType = "INT(4)";
if(field->isAutoIncrement)
dbType += " AUTO_INCREMENT";
break;
case QVariant::String:
case QMetaType::QString:
if(field->length)
dbType = QString("VARCHAR(%1)").arg(field->length);
else
dbType = "TEXT";
break;
case QVariant::Point:
case QVariant::PointF:
case QMetaType::QPoint:
case QMetaType::QPointF:
dbType = "POINT";
break;
case QVariant::Polygon:
case QVariant::PolygonF:
case QMetaType::QPolygon:
case QMetaType::QPolygonF:
dbType = "POLYGON";
break;
case QVariant::Uuid:
case QMetaType::QUuid:
dbType = "VARCHAR(64)";
break;
@ -100,12 +100,12 @@ QString MySqlGenerator::fieldType(FieldModel *field)
QString MySqlGenerator::escapeValue(const QVariant &v) const
{
switch (v.type()) {
case QVariant::Point: {
case QMetaType::QPoint: {
QPoint pt = v.toPoint();
return QString("GeomFromText('POINT(%1 %2)',0)").arg(pt.x()).arg(pt.y());
}
case QVariant::PointF: {
case QMetaType::QPointF: {
QPointF pt = v.toPointF();
return QString("GeomFromText('POINT(%1 %2)',0)").arg(pt.x()).arg(pt.y());
}

View File

@ -61,10 +61,6 @@ SqlGeneratorBase::SqlGeneratorBase(Database *parent)
_serializer = new SqlSerializer;
}
SqlGeneratorBase::~SqlGeneratorBase()
{
}
QString SqlGeneratorBase::masterDatabaseName(QString databaseName)
{
Q_UNUSED(databaseName);
@ -107,7 +103,7 @@ QString SqlGeneratorBase::recordsPhrase(TableModel *table)
foreach (FieldModel *f, table->fields()) {
if (!ret.isEmpty())
ret.append(", ");
ret.append(QString("%1.%2 AS [%1.%2]").arg(table->name()).arg(f->name));
ret.append(QString("%1.%2 AS [%1.%2]").arg(table->name(), f->name));
}
return ret;
}
@ -123,12 +119,11 @@ QString SqlGeneratorBase::fieldDeclare(FieldModel *field)
QString SqlGeneratorBase::relationDeclare(const RelationModel *relation)
{
return QString("FOREIGN KEY (FK_%1) REFERENCES %2(%1)")
.arg(relation->localColumn)
.arg(relation->slaveTable->name());
.arg(relation->localColumn, relation->slaveTable->name());
}
QStringList SqlGeneratorBase::diff(DatabaseModel lastModel,
DatabaseModel newModel)
QStringList SqlGeneratorBase::diff(const DatabaseModel &lastModel,
const DatabaseModel &newModel)
{
QStringList ret;
@ -226,8 +221,7 @@ QString SqlGeneratorBase::diff(TableModel *oldTable, TableModel *newTable)
QString sql;
if (oldTable) {
sql = QString("ALTER TABLE %1 \n%2")
.arg(newTable->name())
.arg(columnSql.join(",\n"));
.arg(newTable->name(), columnSql.join(",\n"));
} else {
if (!newTable->primaryKey().isNull()) {
QString pkCon = primaryKeyConstraint(newTable);
@ -236,8 +230,7 @@ QString SqlGeneratorBase::diff(TableModel *oldTable, TableModel *newTable)
}
sql = QString("CREATE TABLE %1 \n(%2)")
.arg(newTable->name())
.arg(columnSql.join(",\n"));
.arg(newTable->name(), columnSql.join(",\n"));
}
return sql;
}
@ -273,9 +266,8 @@ QString SqlGeneratorBase::diffRelation(TableModel *oldTable, TableModel *newTabl
if (columnSql.count())
return "ALTER TABLE " + newTable->name() + "\n"
+ columnSql.join(",\n");
else
return QString();
return QString();
}
QString SqlGeneratorBase::diff(RelationModel *oldRel, RelationModel *newRel)
@ -295,23 +287,21 @@ QString SqlGeneratorBase::diff(RelationModel *oldRel, RelationModel *newRel)
if (!oldRel)
return QString("ADD CONSTRAINT FK_%1 FOREIGN KEY (%1) "
"REFERENCES %2(%3)")
.arg(newRel->localColumn)
.arg(newRel->masterTable->name())
.arg(newRel->foreignColumn);
.arg(newRel->localColumn, newRel->masterTable->name(),
newRel->foreignColumn);
if (!newRel)
return QString("ADD CONSTRAINT FK_%1 FOREIGN KEY (%1) "
"REFERENCES %2(%3)")
.arg(oldRel->localColumn)
.arg(oldRel->masterTable->name())
.arg(oldRel->foreignColumn);
.arg(oldRel->localColumn, oldRel->masterTable->name(),
oldRel->foreignColumn);
// if (*oldRel == *newRel)
return QString();
return QString();
}
QString SqlGeneratorBase::join(const QString &mainTable,
const QList<RelationModel*> list,
const QList<RelationModel*> &list,
QStringList *order)
{
QString ret = mainTable;
@ -319,19 +309,19 @@ QString SqlGeneratorBase::join(const QString &mainTable,
for (i = list.begin(); i != list.end(); ++i) {
if ((*i)->masterTable->name() == mainTable) {
ret.append(QString(" INNER JOIN %3 ON %1.%2 = %3.%4")
.arg((*i)->masterTable->name())
.arg((*i)->masterTable->primaryKey())
.arg((*i)->slaveTable->name())
.arg((*i)->localColumn));
.arg((*i)->masterTable->name(),
(*i)->masterTable->primaryKey(),
(*i)->slaveTable->name(),
(*i)->localColumn));
if (order != Q_NULLPTR)
order->append((*i)->slaveTable->name() + "." + (*i)->slaveTable->primaryKey());
} else {
ret.append(QString(" INNER JOIN %3 ON %1.%2 = %3.%4")
.arg(mainTable)
.arg((*i)->localColumn)
.arg((*i)->masterTable->name())
.arg((*i)->masterTable->primaryKey()));
.arg(mainTable,
(*i)->localColumn,
(*i)->masterTable->name(),
(*i)->masterTable->primaryKey()));
if (order != Q_NULLPTR)
order->append((*i)->masterTable->name() + "." + (*i)->masterTable->primaryKey());
@ -369,10 +359,8 @@ QString SqlGeneratorBase::join(const QStringList &list, QStringList *order)
if (rel) {
//mainTable is master of table
ret.append(QString(" INNER JOIN [%1] ON %4.%2 = %1.%3")
.arg(table)
.arg(rel->masterTable->primaryKey())
.arg(rel->localColumn)
.arg(mainTable));
.arg(table, rel->masterTable->primaryKey(),
rel->localColumn, mainTable));
if (order != Q_NULLPTR)
order->append(mainTable + "." + rel->masterTable->primaryKey());
@ -382,10 +370,8 @@ QString SqlGeneratorBase::join(const QStringList &list, QStringList *order)
if (rel) {
// table is master of mainTable
ret.append(QString(" INNER JOIN [%1] ON %4.%2 = %1.%3")
.arg(table)
.arg(rel->localColumn)
.arg(rel->masterTable->primaryKey())
.arg(mainTable));
.arg(table, rel->localColumn,
rel->masterTable->primaryKey(), mainTable));
if (order != Q_NULLPTR)
order->append(mainTable + "." + rel->localColumn);
@ -421,9 +407,7 @@ QString SqlGeneratorBase::insertRecord(Table *t, QString tableName)
changedPropertiesText.append(s);
}
sql = QString("INSERT INTO %1 (%2) VALUES (%3)")
.arg(tableName)
.arg(changedPropertiesText)
.arg(values.join(", "));
.arg(tableName, changedPropertiesText, values.join(", "));
removeTableNames(sql);
@ -441,10 +425,8 @@ QString SqlGeneratorBase::updateRecord(Table *t, QString tableName)
values.append(f + "='" + t->property(f.toLatin1().data()).toString()
+ "'");
sql = QString("UPDATE %1 SET %2 WHERE %3=%4")
.arg(tableName)
.arg(values.join(", "))
.arg(key)
.arg(t->primaryValue().toString());
.arg(tableName, values.join(", "),
key, t->primaryValue().toString());
removeTableNames(sql);
@ -454,9 +436,7 @@ QString SqlGeneratorBase::updateRecord(Table *t, QString tableName)
QString SqlGeneratorBase::deleteRecord(Table *t, QString tableName)
{
QString sql = QString("DELETE FROM %1 WHERE %2='%3'")
.arg(tableName)
.arg(t->primaryKey())
.arg(t->primaryValue().toString());
.arg(tableName, t->primaryKey(), t->primaryValue().toString());
replaceTableNames(sql);
return sql;
}
@ -495,10 +475,8 @@ QString SqlGeneratorBase::fromTableText(const QString &tableName,
if (rel) {
QString pk = _database->model().tableByName(tableName)->primaryKey();
tableNameText = QString("%1 INNER JOIN %2 ON (%1.%3 = %2.%4)")
.arg(tableName)
.arg(joinTableName)
.arg(pk)
.arg(rel->localColumn);
.arg(tableName, joinTableName,
pk, rel->localColumn);
orderBy = tableName + "." + pk;
} else {
qWarning("Relation between table %s and class %s (%s) not exists!",
@ -512,7 +490,7 @@ QString SqlGeneratorBase::fromTableText(const QString &tableName,
return tableNameText;
}
QString SqlGeneratorBase::deleteRecords(QString tableName, QString where)
QString SqlGeneratorBase::deleteRecords(const QString &tableName, const QString &where)
{
QString sql = QString();
if (where.isEmpty() || where.isNull())
@ -529,7 +507,7 @@ QString SqlGeneratorBase::selectCommand(const QString &tableName,
const PhraseList &fields,
const ConditionalPhrase &where,
const PhraseList &order,
const QList<RelationModel*> joins,
const QList<RelationModel*> &joins,
const int skip,
const int take)
{
@ -667,9 +645,7 @@ QString SqlGeneratorBase::insertCommand(const QString &tableName, const Assignme
values.append(escapeValue(d->operand));
}
return QString("INSERT INTO %1 (%2) VALUES (%3);")
.arg(tableName)
.arg(fieldNames)
.arg(values);
.arg(tableName, fieldNames, values);
}
//QString SqlGeneratorBase::selectCommand(SqlGeneratorBase::AgregateType t,
@ -962,8 +938,7 @@ void SqlGeneratorBase::appendSkipTake(QString &sql, int skip, int take)
QString SqlGeneratorBase::primaryKeyConstraint(const TableModel *table) const
{
return QString("CONSTRAINT pk_%1 PRIMARY KEY (%2)")
.arg(table->name())
.arg(table->primaryKey());
.arg(table->name(), table->primaryKey());
}
QString SqlGeneratorBase::createConditionalPhrase(const PhraseData *d) const
@ -987,22 +962,22 @@ QString SqlGeneratorBase::createConditionalPhrase(const PhraseData *d) const
case PhraseData::WithVariant:
if (op == PhraseData::AddYears)
ret = QString("DATEADD(year, %1, %2)")
.arg(d->operand.toString()).arg(createConditionalPhrase(d->left));
.arg(d->operand.toString(), createConditionalPhrase(d->left));
else if (op == PhraseData::AddMonths)
ret = QString("DATEADD(month, %1, %2)")
.arg(d->operand.toString()).arg(createConditionalPhrase(d->left));
.arg(d->operand.toString(), createConditionalPhrase(d->left));
else if (op == PhraseData::AddDays)
ret = QString("DATEADD(day, %1, %2)")
.arg(d->operand.toString()).arg(createConditionalPhrase(d->left));
.arg(d->operand.toString(), createConditionalPhrase(d->left));
else if (op == PhraseData::AddHours)
ret = QString("DATEADD(hour, %1, %2)")
.arg(d->operand.toString()).arg(createConditionalPhrase(d->left));
.arg(d->operand.toString(), createConditionalPhrase(d->left));
else if (op == PhraseData::AddMinutes)
ret = QString("DATEADD(minute, %1, %2)")
.arg(d->operand.toString()).arg(createConditionalPhrase(d->left));
.arg(d->operand.toString(), createConditionalPhrase(d->left));
else if (op == PhraseData::AddSeconds)
ret = QString("DATEADD(second, %1, %2)")
.arg(d->operand.toString()).arg(createConditionalPhrase(d->left));
.arg(d->operand.toString(), createConditionalPhrase(d->left));
else
ret = createConditionalPhrase(d->left) + " " + operatorString(op) + " "
+ escapeValue(d->operand);

View File

@ -62,7 +62,7 @@ public:
};
explicit SqlGeneratorBase(Database *parent);
virtual ~SqlGeneratorBase();
virtual ~SqlGeneratorBase() = default;
virtual QString masterDatabaseName(QString databaseName);
@ -72,14 +72,14 @@ public:
virtual QString fieldDeclare(FieldModel *field);
virtual QString relationDeclare(const RelationModel *relation);
virtual QStringList diff(DatabaseModel lastModel, DatabaseModel newModel);
virtual QStringList diff(const DatabaseModel &lastModel, const DatabaseModel &newModel);
virtual QString diff(FieldModel *oldField, FieldModel *newField);
virtual QString diff(TableModel *oldTable, TableModel *newTable);
virtual QString diffRelation(TableModel *oldTable, TableModel *newTable);
virtual QString diff(RelationModel *oldRel, RelationModel *newRel);
virtual QString join(const QString &mainTable,
const QList<RelationModel*> list,
const QList<RelationModel*> &list,
QStringList *order = Q_NULLPTR);
virtual QString join(const QStringList &list, QStringList *order = Q_NULLPTR);
@ -90,13 +90,13 @@ public:
virtual QString insertRecord(Table *t, QString tableName);
virtual QString updateRecord(Table *t, QString tableName);
virtual QString deleteRecord(Table *t, QString tableName);
virtual QString deleteRecords(QString tableName, QString where);
virtual QString deleteRecords(const QString &tableName, const QString &where);
virtual QString selectCommand(const QString &tableName,
const PhraseList &fields,
const ConditionalPhrase &where,
const PhraseList &order,
const QList<RelationModel*> joins,
const QList<RelationModel *> &joins,
const int skip = -1,
const int take = -1);

View File

@ -31,8 +31,6 @@ SqliteGenerator::SqliteGenerator(Database *parent) : SqlGeneratorBase(parent)
QString SqliteGenerator::fieldType(FieldModel *field)
{
QString ret = field->name + " ";
QString dbType;
if (field->isPrimaryKey) {
QString primaryKeyPerfix = " PRIMARY KEY";
if (field->isAutoIncrement)

View File

@ -27,18 +27,18 @@ NUT_BEGIN_NAMESPACE
PhraseData::PhraseData() :
className(""), fieldName(""),
type(Field), operatorCond(NotAssign),
left(0), right(0), operand(QVariant::Invalid), isNot(false), parents(1)
left(nullptr), right(nullptr), operand(QVariant::Invalid), isNot(false), parents(1)
{ }
PhraseData::PhraseData(const char *className, const char *fieldName) :
className(className), fieldName(fieldName),
type(Field), operatorCond(NotAssign),
left(0), right(0), operand(QVariant::Invalid), isNot(false), parents(1)
left(nullptr), right(nullptr), operand(QVariant::Invalid), isNot(false), parents(1)
{ }
PhraseData::PhraseData(PhraseData *l, PhraseData::Condition o)
: className(0), fieldName(0),
type(WithoutOperand), operatorCond(o), left(l), right(0),
: className(nullptr), fieldName(nullptr),
type(WithoutOperand), operatorCond(o), left(l), right(nullptr),
isNot(false), parents(1)
{
l->parents++;
@ -46,7 +46,7 @@ PhraseData::PhraseData(PhraseData *l, PhraseData::Condition o)
PhraseData::PhraseData(PhraseData *l, PhraseData::Condition o,
PhraseData *r)
: className(0), fieldName(0),
: className(nullptr), fieldName(nullptr),
type(WithOther), operatorCond(o),
left(l), right(r),
isNot(false), parents(1)
@ -56,9 +56,9 @@ PhraseData::PhraseData(PhraseData *l, PhraseData::Condition o,
}
PhraseData::PhraseData(PhraseData *l, PhraseData::Condition o, QVariant r)
: className(0), fieldName(0),
: className(nullptr), fieldName(nullptr),
type(WithVariant), operatorCond(o), left(l),
right(0), operand(r), isNot(false), parents(1)
right(nullptr), operand(r), isNot(false), parents(1)
{ }
PhraseData *PhraseData::operator =(PhraseData *other)
@ -75,11 +75,7 @@ PhraseData &PhraseData::operator =(PhraseData &other)
QString PhraseData::toString() const
{
return QString("[%1].%2").arg(className).arg(fieldName);
}
PhraseData::~PhraseData()
{
return QString("[%1].%2").arg(className, fieldName);
}
void PhraseData::cleanUp()
@ -238,10 +234,6 @@ PhraseList::PhraseList(PhraseList *left, const AbstractFieldPhrase *right)
incAllDataParents();
}
PhraseList::~PhraseList()
{
}
PhraseList &PhraseList::operator =(const PhraseList &other)
{
data.append(const_cast<PhraseList&>(other).data);
@ -310,11 +302,6 @@ AssignmentPhraseList AssignmentPhrase::operator &(const AssignmentPhrase &other)
return AssignmentPhraseList(this, &other);
}
AssignmentPhraseList::AssignmentPhraseList()
{
}
AssignmentPhraseList::AssignmentPhraseList(const AssignmentPhrase &l)
{
data.append(l.data);
@ -366,7 +353,7 @@ void AssignmentPhraseList::incAllDataParents()
d->parents++;
}
ConditionalPhrase::ConditionalPhrase() : data(0)
ConditionalPhrase::ConditionalPhrase() : data(nullptr)
{ }
ConditionalPhrase::ConditionalPhrase(const ConditionalPhrase &other)
@ -416,7 +403,7 @@ ConditionalPhrase::ConditionalPhrase(AbstractFieldPhrase *l,
ConditionalPhrase &r)
{
data = new PhraseData(l->data, cond, r.data);
r.data = 0;
r.data = nullptr;
}
ConditionalPhrase::ConditionalPhrase(ConditionalPhrase *l,
@ -424,7 +411,7 @@ ConditionalPhrase::ConditionalPhrase(ConditionalPhrase *l,
const AbstractFieldPhrase &r)
{
data = new PhraseData(l->data, cond, r.data);
l->data = 0;
l->data = nullptr;
}
ConditionalPhrase::ConditionalPhrase(ConditionalPhrase *l,
@ -432,7 +419,7 @@ ConditionalPhrase::ConditionalPhrase(ConditionalPhrase *l,
const QVariant &r)
{
data = new PhraseData(l->data, cond, r);
l->data = 0;
l->data = nullptr;
}
ConditionalPhrase::ConditionalPhrase(ConditionalPhrase *l,
@ -440,8 +427,8 @@ ConditionalPhrase::ConditionalPhrase(ConditionalPhrase *l,
ConditionalPhrase &r)
{
data = new PhraseData(l->data, cond, r.data);
l->data = 0;
r.data = 0;
l->data = nullptr;
r.data = nullptr;
}
ConditionalPhrase::~ConditionalPhrase()
@ -549,9 +536,9 @@ PhraseDataList::PhraseDataList() : QList<PhraseData*>()
PhraseDataList::PhraseDataList(const PhraseDataList &other) : QList<PhraseData*>()
{
PhraseDataList &o = const_cast<PhraseDataList&>(other);
PhraseDataList::iterator i;
for (i = o.begin(); i != o.end(); ++i)
// auto &o = const_cast<PhraseDataList&>(other);
PhraseDataList::const_iterator i;
for (i = other.constBegin(); i != other.constEnd(); ++i)
append(*i);
}

View File

@ -114,7 +114,7 @@ public:
QString toString() const;
~PhraseData();
~PhraseData() = default;
void cleanUp();
private:
@ -135,7 +135,7 @@ class AssignmentPhraseList
{
public:
QList<PhraseData*> data;
explicit AssignmentPhraseList();
explicit AssignmentPhraseList() = default;
AssignmentPhraseList(const AssignmentPhrase &l);
AssignmentPhraseList(AssignmentPhraseList *l, const AssignmentPhrase *r);
AssignmentPhraseList(AssignmentPhrase *l, const AssignmentPhrase *r);
@ -181,7 +181,7 @@ public:
PhraseList(const AbstractFieldPhrase *left, const AbstractFieldPhrase &right);
PhraseList(PhraseList *left, PhraseList *right);
PhraseList(PhraseList *left, const AbstractFieldPhrase *right);
virtual ~PhraseList();
virtual ~PhraseList() = default;
PhraseList &operator =(const PhraseList &other);
PhraseList operator |(PhraseList &other);

View File

@ -23,15 +23,11 @@
NUT_BEGIN_NAMESPACE
QueryPrivate::QueryPrivate(QueryBase *parent) : q_ptr(parent),
database(0), tableSet(0), skip(-1), take(-1)
database(nullptr), tableSet(nullptr), skip(-1), take(-1)
{
}
QueryPrivate::~QueryPrivate()
{
}
/*!
* \class Query
* \brief This class hold a query. A query can be used for getting database rows, editing or deleting without row fetching.

View File

@ -38,7 +38,7 @@ class QueryPrivate{
public:
explicit QueryPrivate(QueryBase *parent);
~QueryPrivate();
~QueryPrivate() = default;
QString sql;
QString className;

View File

@ -1,6 +1,2 @@
#include "serializableobject.h"
SerializableObject::SerializableObject()
{
}

View File

@ -6,7 +6,7 @@
class SerializableObject
{
public:
SerializableObject();
SerializableObject() = default;
virtual void load(const QVariant &value) = 0;
virtual QVariant save() = 0;

View File

@ -85,9 +85,4 @@ QVariant SqlModel::data(const QModelIndex &index, int role) const
return QVariant();
}
SqlModelPrivate::SqlModelPrivate()
{
}
NUT_END_NAMESPACE

View File

@ -13,7 +13,7 @@ class SqlModelPrivate {
SqlModel *q_ptr;
Q_DECLARE_PUBLIC(SqlModel)
public:
explicit SqlModelPrivate();
explicit SqlModelPrivate() = default;
QString tableName;

View File

@ -39,10 +39,9 @@ NUT_BEGIN_NAMESPACE
* This should be fixed to v1.2
*/
Table::Table(QObject *parent) : QObject(parent), myModel(nullptr), _parentTableSet(nullptr)
{
setStatus(NewCreated);
}
Table::Table(QObject *parent) : QObject(parent), myModel(nullptr),
_status(NewCreated), _parentTableSet(nullptr)
{ }
void Table::add(TableSetBase *t)
{
@ -69,7 +68,7 @@ QVariant Table::primaryValue() const
return property(primaryKey().toLatin1().data());
}
void Table::propertyChanged(QString propName)
void Table::propertyChanged(const QString &propName)
{
if (!myModel)
myModel = TableModel::findByClassName(metaObject()->className());

View File

@ -70,7 +70,7 @@ signals:
public slots:
protected:
void propertyChanged(QString propName);
void propertyChanged(const QString &propName);
private:
TableModel *myModel;

View File

@ -1,4 +1,4 @@
/**************************************************************************
/**************************************************************************
**
** This file is part of Nut project.
** https://github.com/HamedMasafi/Nut
@ -74,7 +74,7 @@ FieldModel *TableModel::field(int n) const
return _fields.at(n);
}
FieldModel *TableModel::field(QString name) const
FieldModel *TableModel::field(const QString &name) const
{
foreach (FieldModel *f, _fields)
if(f->name == name)
@ -123,7 +123,7 @@ TableModel *TableModel::findByTypeId(int typeId)
* @param className
* @return
*/
TableModel *TableModel::findByClassName(QString className)
TableModel *TableModel::findByClassName(const QString &className)
{
foreach (TableModel *model, _allModels){
if(model->className() == className)
@ -174,7 +174,7 @@ bool TableModel::operator !=(const TableModel &t) const
// }
//}
TableModel::TableModel(int typeId, QString tableName)
TableModel::TableModel(int typeId, const QString &tableName)
{
//TODO: check that
// if (findByTypeId(typeId))
@ -203,7 +203,7 @@ TableModel::TableModel(int typeId, QString tableName)
}
if(type == __nut_FIELD){
FieldModel *f = new FieldModel;
auto *f = new FieldModel;
f->name = f->displayName = name;
_fields.append(f);
}
@ -234,7 +234,7 @@ TableModel::TableModel(int typeId, QString tableName)
}
if(type == __nut_FOREGION_KEY){
RelationModel *fk = new RelationModel;
auto *fk = new RelationModel;
fk->slaveTable = this;
fk->localColumn = name + "Id";
fk->localProperty = name;
@ -292,7 +292,7 @@ TableModel::TableModel(int typeId, QString tableName)
"primary_key": "id"
},
*/
TableModel::TableModel(QJsonObject json, QString tableName)
TableModel::TableModel(const QJsonObject &json, const QString &tableName) : _typeId(0)
{
_name = tableName;
@ -300,7 +300,7 @@ TableModel::TableModel(QJsonObject json, QString tableName)
QJsonObject relations = json.value(__FOREIGN_KEYS).toObject();
foreach (QString key, fields.keys()) {
QJsonObject fieldObject = fields.value(key).toObject();
FieldModel *f = new FieldModel;
auto *f = new FieldModel;
f->name = fieldObject.value(__NAME).toString();
f->type = static_cast<QMetaType::Type>(QMetaType::type(fieldObject.value(__TYPE).toString().toLatin1().data()));
f->typeName = QMetaType::typeName(f->type);
@ -398,8 +398,7 @@ QString TableModel::toString() const
sl.append(f->name + " " + QVariant::typeToName(f->type));
QString ret = QString("%1 (%2)")
.arg(_name)
.arg(sl.join(", "));
.arg(_name, sl.join(", "));
return ret;
}

View File

@ -92,8 +92,8 @@ bool operator !=(const RelationModel &l, const RelationModel &r);
class TableModel
{
public:
explicit TableModel(int typeId, QString tableName = QString());
explicit TableModel(QJsonObject json, QString tableName);
explicit TableModel(int typeId, const QString &tableName = QString());
explicit TableModel(const QJsonObject &json, const QString &tableName);
virtual ~TableModel();
QJsonObject toJson() const;
@ -103,7 +103,7 @@ public:
// static TableModel* model(QString className);
FieldModel *field(int n) const;
FieldModel *field(QString name) const;
FieldModel *field(const QString &name) const;
RelationModel *foregionKey(const QString &otherTable) const;
RelationModel *foregionKeyByField(const QString &fieldName) const;
@ -126,7 +126,7 @@ public:
static QSet<TableModel *> allModels();
static TableModel *findByTypeId(int typeId);
// static TableModel *findByName(QString name);
static TableModel *findByClassName(QString className);
static TableModel *findByClassName(const QString &className);
bool operator ==(const TableModel &t) const;
bool operator !=(const TableModel &t) const;

View File

@ -1,8 +1,8 @@
#ifndef CONSTS_H
#define CONSTS_H
#define REGISTER(x) qDebug() << #x << "type id:" << qRegisterMetaType<x*>()
#define PRINT(x) qDebug() << #x "=" << x;
#define REGISTER(x) qDebug() << (#x) << "type id:" << qMetaTypeId<x*>()
#define PRINT(x) qDebug() << (#x "=") << (x);
#define TIC() QElapsedTimer timer; timer.start()
#define TOC() qDebug() << QString("Elapsed time: %1ms for %2") \
.arg(timer.elapsed() / 1000.) \

View File

@ -74,14 +74,14 @@ void MainTest::createPost()
db.posts()->append(newPost);
for(int i = 0 ; i < 3; i++){
Comment *comment = new Comment;
auto *comment = new Comment;
comment->setMessage("comment #" + QString::number(i));
comment->setSaveDate(QDateTime::currentDateTime());
comment->setAuthorId(user->id());
newPost->comments()->append(comment);
}
for (int i = 0; i < 10; ++i) {
Score *score = new Score;
auto *score = new Score;
score->setScore(i % 5);
newPost->scores()->append(score);
}
@ -106,7 +106,7 @@ void MainTest::createPost2()
int postId = postIdVar.toInt();
for(int i = 0 ; i < 3; i++){
Comment *comment = new Comment;
auto *comment = new Comment;
comment->setMessage("comment #" + QString::number(i + 2));
comment->setSaveDate(QDateTime::currentDateTime());
comment->setAuthor(user);

View File

@ -16,10 +16,6 @@
#include "generators/sqlitegenerator.h"
#include "generators/sqlservergenerator.h"
#define PRINT(x) qDebug() << #x "=" << x;
#define REGISTER(x) qDebug() << #x << "type id:" << qMetaTypeId<x*>()
MainTest::MainTest(QObject *parent) : QObject(parent)
{
}