subdirs
This commit is contained in:
parent
afcfa39ada
commit
f5c10e8759
55
nut.pro
55
nut.pro
|
|
@ -1,53 +1,6 @@
|
|||
QT += sql
|
||||
QT -= gui
|
||||
TEMPLATE = subdirs
|
||||
|
||||
TARGET = nut
|
||||
TEMPLATE = lib
|
||||
CONFIG += c++11
|
||||
SUBDIRS += \
|
||||
src \
|
||||
test
|
||||
|
||||
DEFINES += QT_DEPRECATED_WARNINGS
|
||||
|
||||
HEADERS += \
|
||||
$$PWD/src/generators/sqlgeneratorbase_p.h \
|
||||
$$PWD/src/generators/postgresqlgenerator.h \
|
||||
$$PWD/src/generators/mysqlgenerator.h \
|
||||
$$PWD/src/generators/sqlitegenerator.h \
|
||||
$$PWD/src/generators/sqlservergenerator.h \
|
||||
$$PWD/src/types/dbgeography.h \
|
||||
$$PWD/src/tableset.h \
|
||||
$$PWD/src/defines_p.h \
|
||||
$$PWD/src/defines.h \
|
||||
$$PWD/src/query.h \
|
||||
$$PWD/src/databasemodel.h \
|
||||
$$PWD/src/changelogtable.h \
|
||||
$$PWD/src/tablesetbase_p.h \
|
||||
$$PWD/src/querybase_p.h \
|
||||
$$PWD/src/tablemodel.h \
|
||||
$$PWD/src/query_p.h \
|
||||
$$PWD/src/table.h \
|
||||
$$PWD/src/database.h \
|
||||
$$PWD/src/database_p.h \
|
||||
$$PWD/src/serializableobject.h \
|
||||
$$PWD/src/sqlmodel.h \
|
||||
$$PWD/src/sqlmodel_p.h \
|
||||
$$PWD/src/phrase.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/src/generators/sqlgeneratorbase.cpp \
|
||||
$$PWD/src/generators/postgresqlgenerator.cpp \
|
||||
$$PWD/src/generators/mysqlgenerator.cpp \
|
||||
$$PWD/src/generators/sqlitegenerator.cpp \
|
||||
$$PWD/src/generators/sqlservergenerator.cpp \
|
||||
$$PWD/src/types/dbgeography.cpp \
|
||||
$$PWD/src/tableset.cpp \
|
||||
$$PWD/src/query.cpp \
|
||||
$$PWD/src/databasemodel.cpp \
|
||||
$$PWD/src/tablesetbase.cpp \
|
||||
$$PWD/src/changelogtable.cpp \
|
||||
$$PWD/src/querybase.cpp \
|
||||
$$PWD/src/tablemodel.cpp \
|
||||
$$PWD/src/table.cpp \
|
||||
$$PWD/src/database.cpp \
|
||||
$$PWD/src/serializableobject.cpp \
|
||||
$$PWD/src/sqlmodel.cpp \
|
||||
$$PWD/src/phrase.cpp
|
||||
|
|
|
|||
|
|
@ -137,6 +137,17 @@ bool DatabasePrivate::updateDatabase()
|
|||
return true;
|
||||
}
|
||||
|
||||
foreach (TableModel *tm, current) {
|
||||
foreach (FieldModel *fm, tm->fields()) {
|
||||
if (sqlGenertor->fieldType(fm).isEmpty()) {
|
||||
qWarning("The type (%s) is not supported for field %s::%s",
|
||||
QMetaType::typeName(fm->type),
|
||||
qPrintable(tm->className()),
|
||||
qPrintable(fm->name));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!last.count())
|
||||
qDebug("Databse is new");
|
||||
else
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
#include "../table.h"
|
||||
#include "../databasemodel.h"
|
||||
#include "../tablemodel.h"
|
||||
#include "stringserializer.h"
|
||||
|
||||
NUT_BEGIN_NAMESPACE
|
||||
|
||||
|
|
@ -56,6 +57,8 @@ SqlGeneratorBase::SqlGeneratorBase(Database *parent)
|
|||
{
|
||||
if (parent)
|
||||
_database = parent;
|
||||
|
||||
_serializer = new StringSerializer;
|
||||
}
|
||||
|
||||
SqlGeneratorBase::~SqlGeneratorBase()
|
||||
|
|
@ -792,6 +795,13 @@ void SqlGeneratorBase::removeTableNames(QString &command)
|
|||
|
||||
QString SqlGeneratorBase::escapeValue(const QVariant &v) const
|
||||
{
|
||||
QString serialized = _serializer->toString(v);
|
||||
if (serialized.isEmpty()) {
|
||||
qWarning("No field escape rule for: %s", v.typeName());
|
||||
return QString();
|
||||
}
|
||||
return "'" + serialized + "'";
|
||||
|
||||
switch (v.type()) {
|
||||
case QVariant::Bool:
|
||||
return v.toBool() ? "1" : "0";
|
||||
|
|
@ -823,15 +833,11 @@ QString SqlGeneratorBase::escapeValue(const QVariant &v) const
|
|||
case QVariant::List:
|
||||
return "('" + v.toStringList().join("', '") + "')";
|
||||
|
||||
case QVariant::Point: {
|
||||
QPoint pt = v.toPoint();
|
||||
return QString("POINT(%1 %2)").arg(pt.x()).arg(pt.y());
|
||||
}
|
||||
|
||||
case QVariant::PointF: {
|
||||
QPointF pt = v.toPointF();
|
||||
return QString("POINT(%1 %2)").arg(pt.x()).arg(pt.y());
|
||||
}
|
||||
case QVariant::Point:
|
||||
case QVariant::PointF:
|
||||
case QVariant::Polygon:
|
||||
case QVariant::PolygonF:
|
||||
return "'" + _serializer->toString(v) + "'";
|
||||
|
||||
case QVariant::Invalid:
|
||||
qFatal("Invalud field value");
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@
|
|||
#include "../phrase.h"
|
||||
//#include "../wherephrase.h"
|
||||
|
||||
class StringSerializer;
|
||||
|
||||
NUT_BEGIN_NAMESPACE
|
||||
|
||||
class Table;
|
||||
|
|
@ -40,6 +42,8 @@ class SqlGeneratorBase : public QObject
|
|||
// Q_OBJECT
|
||||
|
||||
Database *_database;
|
||||
StringSerializer *_serializer;
|
||||
|
||||
public:
|
||||
//TODO: remove this enum
|
||||
enum CommandType{
|
||||
|
|
|
|||
|
|
@ -67,6 +67,10 @@ QString SqliteGenerator::fieldType(FieldModel *field)
|
|||
case QMetaType::QJsonValue:
|
||||
case QMetaType::QJsonObject:
|
||||
case QMetaType::QJsonDocument:
|
||||
case QMetaType::QPoint:
|
||||
case QMetaType::QPointF:
|
||||
case QMetaType::QPolygon:
|
||||
case QMetaType::QPolygonF:
|
||||
case QMetaType::QUuid: return "text";
|
||||
|
||||
// if (field->isAutoIncrement)
|
||||
|
|
@ -78,8 +82,8 @@ QString SqliteGenerator::fieldType(FieldModel *field)
|
|||
else
|
||||
return "TEXT";
|
||||
default:
|
||||
qWarning("The type (%s) does not supported",
|
||||
QMetaType::typeName(field->type));
|
||||
// qWarning("The type (%s) does not supported",
|
||||
// QMetaType::typeName(field->type));
|
||||
return QString();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,55 @@
|
|||
QT += sql
|
||||
QT -= gui
|
||||
|
||||
TARGET = nut
|
||||
TEMPLATE = lib
|
||||
CONFIG += c++11
|
||||
|
||||
DEFINES += QT_DEPRECATED_WARNINGS
|
||||
|
||||
HEADERS += \
|
||||
$$PWD/generators/sqlgeneratorbase_p.h \
|
||||
$$PWD/generators/postgresqlgenerator.h \
|
||||
$$PWD/generators/mysqlgenerator.h \
|
||||
$$PWD/generators/sqlitegenerator.h \
|
||||
$$PWD/generators/sqlservergenerator.h \
|
||||
$$PWD/types/dbgeography.h \
|
||||
$$PWD/tableset.h \
|
||||
$$PWD/defines_p.h \
|
||||
$$PWD/defines.h \
|
||||
$$PWD/query.h \
|
||||
$$PWD/databasemodel.h \
|
||||
$$PWD/changelogtable.h \
|
||||
$$PWD/tablesetbase_p.h \
|
||||
$$PWD/querybase_p.h \
|
||||
$$PWD/tablemodel.h \
|
||||
$$PWD/query_p.h \
|
||||
$$PWD/table.h \
|
||||
$$PWD/database.h \
|
||||
$$PWD/database_p.h \
|
||||
$$PWD/serializableobject.h \
|
||||
$$PWD/sqlmodel.h \
|
||||
$$PWD/sqlmodel_p.h \
|
||||
$$PWD/phrase.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/generators/sqlgeneratorbase.cpp \
|
||||
$$PWD/generators/postgresqlgenerator.cpp \
|
||||
$$PWD/generators/mysqlgenerator.cpp \
|
||||
$$PWD/generators/sqlitegenerator.cpp \
|
||||
$$PWD/generators/sqlservergenerator.cpp \
|
||||
$$PWD/types/dbgeography.cpp \
|
||||
$$PWD/tableset.cpp \
|
||||
$$PWD/query.cpp \
|
||||
$$PWD/databasemodel.cpp \
|
||||
$$PWD/tablesetbase.cpp \
|
||||
$$PWD/changelogtable.cpp \
|
||||
$$PWD/querybase.cpp \
|
||||
$$PWD/tablemodel.cpp \
|
||||
$$PWD/table.cpp \
|
||||
$$PWD/database.cpp \
|
||||
$$PWD/serializableobject.cpp \
|
||||
$$PWD/sqlmodel.cpp \
|
||||
$$PWD/phrase.cpp
|
||||
|
||||
include($$PWD/../3rdparty/serializer/src/src.pri)
|
||||
|
|
@ -16,8 +16,8 @@
|
|||
#define DRIVER "QSQLITE"
|
||||
#define HOST "127.0.0.1"
|
||||
#define DATABASE "nutdb1"
|
||||
//#define USERNAME "root"
|
||||
//#define PASSWORD "onlyonlyi"
|
||||
#define USERNAME "root"
|
||||
#define PASSWORD "onlyonlyi"
|
||||
|
||||
//#define DRIVER "QODBC"
|
||||
//#define HOST "127.0.0.1"
|
||||
|
|
|
|||
|
|
@ -11,5 +11,5 @@ Post::Post(QObject *parent) : Table(parent),
|
|||
|
||||
}
|
||||
|
||||
NUT_IMPLEMENT_CHILD_TABLE(Post, Comment, comments)
|
||||
NUT_IMPLEMENT_CHILD_TABLE(Post, Score, scores)
|
||||
//NUT_IMPLEMENT_CHILD_TABLE(Post, Comment, comments)
|
||||
//NUT_IMPLEMENT_CHILD_TABLE(Post, Score, scores)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
TEMPLATE = subdirs
|
||||
|
||||
SUBDIRS += \
|
||||
tst_basic \
|
||||
tst_benckmark \
|
||||
tst_commands \
|
||||
tst_datatypes \
|
||||
#tst_join \
|
||||
tst_phrases \
|
||||
tst_quuid
|
||||
|
||||
|
|
@ -106,6 +106,23 @@ void MainTest::types()
|
|||
// qDebug() << en.value(i);
|
||||
}
|
||||
|
||||
void MainTest::insert()
|
||||
{
|
||||
SampleTable t;
|
||||
t.setFint8(1);
|
||||
t.setFreal(1.2);
|
||||
t.setFfloat(4.5f);
|
||||
t.setFint16(16);
|
||||
t.setFint32(65000);
|
||||
t.setFint64(3255465232);
|
||||
t.setFuint8(2);
|
||||
t.setPoint(QPoint(1, 2));
|
||||
t.setPolygon(QPolygon() << QPoint(1, 2) << QPoint(3, 4) << QPoint(5, 6));
|
||||
|
||||
db.sampleTables()->append(&t);
|
||||
db.saveChanges();
|
||||
}
|
||||
|
||||
void MainTest::cleanupTestCase()
|
||||
{
|
||||
db.close();
|
||||
|
|
@ -20,7 +20,7 @@ private slots:
|
|||
void initTestCase();
|
||||
|
||||
void types();
|
||||
|
||||
void insert();
|
||||
void cleanupTestCase();
|
||||
};
|
||||
|
||||
|
|
@ -26,7 +26,7 @@ class SampleTable : public Nut::Table
|
|||
|
||||
NUT_DECLARE_FIELD(qreal, freal, freal, setFreal)
|
||||
NUT_DECLARE_FIELD(float, ffloat, ffloat, setFfloat)
|
||||
NUT_DECLARE_FIELD(long double, fldouble, fldouble, setFldouble)
|
||||
// NUT_DECLARE_FIELD(long double, fldouble, fldouble, setFldouble)
|
||||
NUT_DECLARE_FIELD(QString, string, string, setString)
|
||||
NUT_DECLARE_FIELD(QPoint, point, point, setPoint)
|
||||
NUT_DECLARE_FIELD(QPolygon, polygon, polygon, setPolygon)
|
||||
Loading…
Reference in New Issue