uuid detect

This commit is contained in:
Hamed Masafi 2018-01-11 10:43:01 +03:30
parent 8af466e480
commit 1713a237eb
5 changed files with 56 additions and 24 deletions

View File

@ -23,6 +23,7 @@
#include <QDateTime>
#include <QPointF>
#include <QTime>
#include <QUuid>
#include <QVariant>
#include "sqlgeneratorbase_p.h"
@ -381,6 +382,17 @@ QString SqlGeneratorBase::selectCommand(SqlGeneratorBase::AgregateType t,
QList<WherePhrase> &wheres,
QList<WherePhrase> &orders,
QStringList joins, int skip, int take)
{
return selectCommand(t, agregateArg, wheres, orders, joins, skip, take);
}
QString SqlGeneratorBase::selectCommand(SqlGeneratorBase::AgregateType t,
QString agregateArg,
QList<WherePhrase> &wheres,
QList<WherePhrase> &orders,
QStringList joins,
int skip, int take,
QStringList *order)
{
Q_UNUSED(take);
Q_UNUSED(skip);
@ -389,12 +401,14 @@ QString SqlGeneratorBase::selectCommand(SqlGeneratorBase::AgregateType t,
QString select = agregateText(t, agregateArg);
QString from = join(joins, &joinedOrders);
QString where = createWhere(wheres);
QString order = joinedOrders.join(", ");
QString orderText = joinedOrders.join(", ");
if (order != Q_NULLPTR)
order = joinedOrders;
foreach (WherePhrase p, orders) {
if (order != "")
order.append(", ");
order.append(phraseOrder(p.data()));
if (orderText != "")
orderText.append(", ");
orderText.append(phraseOrder(p.data()));
}
QString sql = "SELECT " + select + " FROM " + from;
@ -402,8 +416,8 @@ QString SqlGeneratorBase::selectCommand(SqlGeneratorBase::AgregateType t,
if (where != "")
sql.append(" WHERE " + where);
if (order != "")
sql.append(" ORDER BY " + order);
if (orderText != "")
sql.append(" ORDER BY " + orderText);
for (int i = 0; i < _database->model().count(); i++)
sql = sql.replace(_database->model().at(i)->className() + ".",
@ -479,14 +493,6 @@ QString SqlGeneratorBase::updateCommand(WherePhrase &phrase,
return sql;
}
QString SqlGeneratorBase::joinTables(QStringList tables)
{
Q_UNUSED(tables);
//TODO: implement me
// _database->model().relationByClassNames()
return "";
}
QString SqlGeneratorBase::escapeValue(const QVariant &v) const
{
switch (v.type()) {
@ -502,18 +508,22 @@ QString SqlGeneratorBase::escapeValue(const QVariant &v) const
return v.toString();
break;
case QVariant::Uuid:
return v.toUuid().toString();
break;
case QVariant::Char:
case QVariant::String:
return "'" + v.toString() + "'";
case QVariant::DateTime:
return "'" + v.toDateTime().toString() + "'";
return "'" + v.toDateTime().toString(Qt::ISODate) + "'";
case QVariant::Date:
return "'" + v.toDate().toString() + "'";
return "'" + v.toDate().toString(Qt::ISODate) + "'";
case QVariant::Time:
return "'" + v.toTime().toString() + "'";
return "'" + v.toTime().toString(Qt::ISODate) + "'";
case QVariant::StringList:
case QVariant::List:
@ -534,6 +544,7 @@ QString SqlGeneratorBase::escapeValue(const QVariant &v) const
return "<FAIL>";
default:
Q_UNREACHABLE();
return "";
}
}

View File

@ -71,11 +71,10 @@ public:
virtual QString join(const QStringList &list, QStringList *order = Q_NULLPTR);
virtual QString saveRecord(Table *t, QString tableName);
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 selectCommand(AgregateType t,
@ -84,13 +83,18 @@ public:
QList<WherePhrase> &orders,
QStringList joins,
int skip = -1, int take = -1);
virtual QString selectCommand(AgregateType t,
QString agregateArg,
QList<WherePhrase> &wheres,
QList<WherePhrase> &orders,
QStringList joins,
int skip = -1, int take = -1,
QStringList *order = Q_NULLPTR);
virtual QString deleteCommand(QList<WherePhrase> &wheres, QString tableName);
virtual QString updateCommand(WherePhrase &phrase, QList<WherePhrase> &wheres, QString tableName);
virtual QString joinTables(QStringList tables);
virtual QString escapeValue(const QVariant &v) const;
virtual QVariant readValue(const QVariant::Type &type, const QVariant &dbValue);
virtual QString phrase(const PhraseData *d) const;

View File

@ -131,12 +131,16 @@ Q_OUTOFLINE_TEMPLATE QList<T *> Query<T>::toList(int count)
// QSqlQuery q =
// d->database->exec(d->database->sqlGenertor()->selectCommand(d->wheres,
// d->orders, d->tableName, d->joinClassName));
QStringList orders;
d->sql = d->database->sqlGenertor()->selectCommand(
SqlGeneratorBase::SelectAll, "", d->wheres, d->orderPhrases,
d->joins, d->skip, d->take);
d->joins, d->skip, d->take, &orders);
QSqlQuery q = d->database->exec(d->sql);
// QString pk = TableModel::findByName(d->tableName)->primaryKey();
while (q.next()) {
}
QString pk = d->database->model().tableByName(d->tableName)->primaryKey();
QVariant lastPkValue = QVariant();
int childTypeId = 0;

View File

@ -46,7 +46,16 @@ void MainTest::dataScheema()
// qDebug() << model.toJson();
// qDebug() << db.model().toJson();
// QTEST_ASSERT(model == db.model());
// QTEST_ASSERT(model == db.model());
}
void MainTest::createUser()
{
user = new User;
user->setUsername("admin");
user->setPassword("123456");
db.users()->append(user);
db.saveChanges();
}
void MainTest::createPost()
@ -84,6 +93,7 @@ void MainTest::createPost2()
Comment *comment = new Comment;
comment->setMessage("comment #" + QString::number(i));
comment->setSaveDate(QDateTime::currentDateTime());
comment->setAuthor(user);
comment->setPostId(newPost->id());
db.comments()->append(comment);
}

View File

@ -6,12 +6,14 @@
#include "weblogdatabase.h"
class Post;
class User;
class MainTest : public QObject
{
Q_OBJECT
WeblogDatabase db;
int postId;
Post *post;
User *User;
public:
explicit MainTest(QObject *parent = 0);
@ -22,6 +24,7 @@ private slots:
void initTestCase();
void dataScheema();
void createUser();
void createPost();
void createPost2();
void selectPosts();