wip: CONSTRAINT [skip ci]
This commit is contained in:
parent
a6f6217d89
commit
bb55b4b743
|
|
@ -249,6 +249,7 @@ QStringList SqlGeneratorBase::diff(TableModel *oldTable, TableModel *newTable)
|
||||||
QString pkCon = primaryKeyConstraint(newTable);
|
QString pkCon = primaryKeyConstraint(newTable);
|
||||||
if (!pkCon.isEmpty())
|
if (!pkCon.isEmpty())
|
||||||
columnSql << pkCon;
|
columnSql << pkCon;
|
||||||
|
columnSql << constraints(newTable);
|
||||||
}
|
}
|
||||||
|
|
||||||
sql = QString("CREATE TABLE %1 \n(%2)")
|
sql = QString("CREATE TABLE %1 \n(%2)")
|
||||||
|
|
@ -853,7 +854,7 @@ QString SqlGeneratorBase::escapeValue(const QVariant &v) const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant SqlGeneratorBase::readValue(const QMetaType::Type &type,
|
QVariant SqlGeneratorBase::unescapeValue(const QMetaType::Type &type,
|
||||||
const QVariant &dbValue)
|
const QVariant &dbValue)
|
||||||
{
|
{
|
||||||
return _serializer->deserialize(dbValue.toString(), type);
|
return _serializer->deserialize(dbValue.toString(), type);
|
||||||
|
|
|
||||||
|
|
@ -96,9 +96,9 @@ QString SqliteGenerator::fieldDeclare(FieldModel *field)
|
||||||
return type;
|
return type;
|
||||||
|
|
||||||
if (field->isPrimaryKey) {
|
if (field->isPrimaryKey) {
|
||||||
type.append(" PRIMARY KEY");
|
type.append("INTEGER PRIMARY KEY");
|
||||||
if (field->isAutoIncrement)
|
if (field->isAutoIncrement)
|
||||||
type = "INTEGER PRIMARY KEY AUTOINCREMENT";
|
type.append(" AUTOINCREMENT");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (field->notNull)
|
if (field->notNull)
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ public:
|
||||||
|
|
||||||
QString fieldType(FieldModel *field) override;
|
QString fieldType(FieldModel *field) override;
|
||||||
QString fieldDeclare(FieldModel *field) override;
|
QString fieldDeclare(FieldModel *field) override;
|
||||||
|
|
||||||
bool supportAutoIncrement(const QMetaType::Type &type) override;
|
bool supportAutoIncrement(const QMetaType::Type &type) override;
|
||||||
|
|
||||||
void appendSkipTake(QString &sql, int skip, int take) override;
|
void appendSkipTake(QString &sql, int skip, int take) override;
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ void BasicTest::initTestCase()
|
||||||
|
|
||||||
db.setDriver(DRIVER);
|
db.setDriver(DRIVER);
|
||||||
db.setHostName(HOST);
|
db.setHostName(HOST);
|
||||||
db.setDatabaseName("nut_tst_basic");
|
db.setDatabaseName(DATABASE);
|
||||||
db.setUserName(USERNAME);
|
db.setUserName(USERNAME);
|
||||||
db.setPassword(PASSWORD);
|
db.setPassword(PASSWORD);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,19 @@
|
||||||
#ifndef SAMPLETABLE_H
|
#ifndef SAMPLETABLE_H
|
||||||
#define SAMPLETABLE_H
|
#define SAMPLETABLE_H
|
||||||
|
|
||||||
#include <QColor>
|
|
||||||
#include <QPoint>
|
#include <QPoint>
|
||||||
#include <QTime>
|
#include <QTime>
|
||||||
#include <QDate>
|
#include <QDate>
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
#include <QPolygon>
|
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
#include <QUuid>
|
#include <QUuid>
|
||||||
#include <QJsonDocument>
|
#include <QJsonDocument>
|
||||||
#include <QJsonObject>
|
#include <QJsonObject>
|
||||||
#include <QJsonArray>
|
#include <QJsonArray>
|
||||||
|
#ifdef QT_GUI_LIB
|
||||||
|
#include <QColor>
|
||||||
|
#include <QPolygon>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "table.h"
|
#include "table.h"
|
||||||
|
|
||||||
|
|
@ -38,10 +40,6 @@ class SampleTable : public Nut::Table
|
||||||
NUT_DECLARE_FIELD(float, f_float, f_float, setFloat)
|
NUT_DECLARE_FIELD(float, f_float, f_float, setFloat)
|
||||||
// NUT_DECLARE_FIELD(long double, fldouble, fldouble, setFldouble)
|
// NUT_DECLARE_FIELD(long double, fldouble, fldouble, setFldouble)
|
||||||
NUT_DECLARE_FIELD(QString, f_string, f_string, setString)
|
NUT_DECLARE_FIELD(QString, f_string, f_string, setString)
|
||||||
NUT_DECLARE_FIELD(QPoint, f_point, f_point, setPoint)
|
|
||||||
NUT_DECLARE_FIELD(QPointF, f_pointf, f_pointf, setPointf)
|
|
||||||
NUT_DECLARE_FIELD(QPolygon, f_polygon, f_polygon, setPolygon)
|
|
||||||
NUT_DECLARE_FIELD(QPolygonF, f_polygonf, f_polygonf, setPolygonf)
|
|
||||||
|
|
||||||
NUT_DECLARE_FIELD(QTime, f_time, f_time, setTime)
|
NUT_DECLARE_FIELD(QTime, f_time, f_time, setTime)
|
||||||
NUT_DECLARE_FIELD(QDate, f_date, f_date, setDate)
|
NUT_DECLARE_FIELD(QDate, f_date, f_date, setDate)
|
||||||
|
|
@ -58,8 +56,13 @@ class SampleTable : public Nut::Table
|
||||||
|
|
||||||
NUT_DECLARE_FIELD(QStringList, f_stringList, f_stringList, setStringList)
|
NUT_DECLARE_FIELD(QStringList, f_stringList, f_stringList, setStringList)
|
||||||
NUT_DECLARE_FIELD(QChar, f_qchar, f_qchar, setQchar)
|
NUT_DECLARE_FIELD(QChar, f_qchar, f_qchar, setQchar)
|
||||||
|
#ifdef QT_GUI_LIB
|
||||||
|
NUT_DECLARE_FIELD(QPoint, f_point, f_point, setPoint)
|
||||||
|
NUT_DECLARE_FIELD(QPointF, f_pointf, f_pointf, setPointf)
|
||||||
|
NUT_DECLARE_FIELD(QPolygon, f_polygon, f_polygon, setPolygon)
|
||||||
|
NUT_DECLARE_FIELD(QPolygonF, f_polygonf, f_polygonf, setPolygonf)
|
||||||
NUT_DECLARE_FIELD(QColor, f_color, f_color, setColor)
|
NUT_DECLARE_FIELD(QColor, f_color, f_color, setColor)
|
||||||
|
#endif
|
||||||
public:
|
public:
|
||||||
Q_INVOKABLE SampleTable(QObject *parent = Q_NULLPTR);
|
Q_INVOKABLE SampleTable(QObject *parent = Q_NULLPTR);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -44,10 +44,6 @@ void DataTypesTest::initTestCase()
|
||||||
f_uint64 = 64ull;
|
f_uint64 = 64ull;
|
||||||
f_real = 1.2;
|
f_real = 1.2;
|
||||||
f_float = 2.3f;
|
f_float = 2.3f;
|
||||||
f_point = QPoint(1, 2);
|
|
||||||
f_pointf = QPointF(1.2, 3.4);
|
|
||||||
f_polygon = QPolygon() << QPoint(1, 2) << QPoint(3, 4) << QPoint(5, 6);
|
|
||||||
f_polygonf = QPolygonF() << QPointF(1.2, 2.3) << QPointF(3.4, 4.5) << QPointF(5.6, 6.7);
|
|
||||||
|
|
||||||
f_url = QUrl("http://google.com/search?q=nut");
|
f_url = QUrl("http://google.com/search?q=nut");
|
||||||
|
|
||||||
|
|
@ -74,7 +70,13 @@ void DataTypesTest::initTestCase()
|
||||||
|
|
||||||
f_qchar = QChar('z');
|
f_qchar = QChar('z');
|
||||||
|
|
||||||
|
#ifdef QT_GUI_LIB
|
||||||
|
f_point = QPoint(1, 2);
|
||||||
|
f_pointf = QPointF(1.2, 3.4);
|
||||||
|
f_polygon = QPolygon() << QPoint(1, 2) << QPoint(3, 4) << QPoint(5, 6);
|
||||||
|
f_polygonf = QPolygonF() << QPointF(1.2, 2.3) << QPointF(3.4, 4.5) << QPointF(5.6, 6.7);
|
||||||
f_color = Qt::red;
|
f_color = Qt::red;
|
||||||
|
#endif
|
||||||
|
|
||||||
QTEST_ASSERT(ok);
|
QTEST_ASSERT(ok);
|
||||||
|
|
||||||
|
|
@ -97,12 +99,6 @@ void DataTypesTest::insert()
|
||||||
t.setReal(f_real);
|
t.setReal(f_real);
|
||||||
t.setFloat(f_float);
|
t.setFloat(f_float);
|
||||||
|
|
||||||
t.setPoint(f_point);
|
|
||||||
t.setPointf(f_pointf);
|
|
||||||
|
|
||||||
t.setPolygon(f_polygon);
|
|
||||||
t.setPolygonf(f_polygonf);
|
|
||||||
|
|
||||||
t.setUrl(f_url);
|
t.setUrl(f_url);
|
||||||
|
|
||||||
t.setTime(f_time);
|
t.setTime(f_time);
|
||||||
|
|
@ -118,8 +114,15 @@ void DataTypesTest::insert()
|
||||||
t.setString(f_string);
|
t.setString(f_string);
|
||||||
t.setStringList(f_stringList);
|
t.setStringList(f_stringList);
|
||||||
t.setQchar(f_qchar);
|
t.setQchar(f_qchar);
|
||||||
|
#ifdef QT_GUI_LIB
|
||||||
t.setColor(f_color);
|
t.setColor(f_color);
|
||||||
|
|
||||||
|
t.setPoint(f_point);
|
||||||
|
t.setPointf(f_pointf);
|
||||||
|
|
||||||
|
t.setPolygon(f_polygon);
|
||||||
|
t.setPolygonf(f_polygonf);
|
||||||
|
#endif
|
||||||
db.sampleTables()->append(&t);
|
db.sampleTables()->append(&t);
|
||||||
db.saveChanges();
|
db.saveChanges();
|
||||||
}
|
}
|
||||||
|
|
@ -143,11 +146,6 @@ void DataTypesTest::retrive()
|
||||||
QTEST_ASSERT(qFuzzyCompare(t->f_real(), f_real));
|
QTEST_ASSERT(qFuzzyCompare(t->f_real(), f_real));
|
||||||
QTEST_ASSERT(qFuzzyCompare(t->f_float(), f_float));
|
QTEST_ASSERT(qFuzzyCompare(t->f_float(), f_float));
|
||||||
|
|
||||||
QTEST_ASSERT(t->f_point() == f_point);
|
|
||||||
QTEST_ASSERT(t->f_pointf() == f_pointf);
|
|
||||||
|
|
||||||
QTEST_ASSERT(t->f_polygon() == f_polygon);
|
|
||||||
QTEST_ASSERT(t->f_polygonf() == f_polygonf);
|
|
||||||
|
|
||||||
QTEST_ASSERT(t->f_url() == f_url);
|
QTEST_ASSERT(t->f_url() == f_url);
|
||||||
QTEST_ASSERT(t->f_uuid() == f_uuid);
|
QTEST_ASSERT(t->f_uuid() == f_uuid);
|
||||||
|
|
@ -164,7 +162,14 @@ void DataTypesTest::retrive()
|
||||||
QTEST_ASSERT(t->f_string() == f_string);
|
QTEST_ASSERT(t->f_string() == f_string);
|
||||||
QTEST_ASSERT(t->f_stringList() == f_stringList);
|
QTEST_ASSERT(t->f_stringList() == f_stringList);
|
||||||
QTEST_ASSERT(t->f_qchar() == f_qchar);
|
QTEST_ASSERT(t->f_qchar() == f_qchar);
|
||||||
|
#ifdef QT_GUI_LIB
|
||||||
|
QTEST_ASSERT(t->f_point() == f_point);
|
||||||
|
QTEST_ASSERT(t->f_pointf() == f_pointf);
|
||||||
|
|
||||||
|
QTEST_ASSERT(t->f_polygon() == f_polygon);
|
||||||
|
QTEST_ASSERT(t->f_polygonf() == f_polygonf);
|
||||||
QTEST_ASSERT(t->f_color() == f_color);
|
QTEST_ASSERT(t->f_color() == f_color);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#define CHECK(name) \
|
#define CHECK(name) \
|
||||||
|
|
@ -187,10 +192,6 @@ void DataTypesTest::check()
|
||||||
CHECK(uint64)
|
CHECK(uint64)
|
||||||
CHECK(real)
|
CHECK(real)
|
||||||
CHECK(float)
|
CHECK(float)
|
||||||
CHECK(point)
|
|
||||||
CHECK(pointf)
|
|
||||||
CHECK(polygon)
|
|
||||||
CHECK(polygonf)
|
|
||||||
CHECK(url)
|
CHECK(url)
|
||||||
|
|
||||||
CHECK(time)
|
CHECK(time)
|
||||||
|
|
@ -207,7 +208,13 @@ void DataTypesTest::check()
|
||||||
CHECK(stringList)
|
CHECK(stringList)
|
||||||
|
|
||||||
CHECK(qchar)
|
CHECK(qchar)
|
||||||
|
#ifdef QT_GUI_LIB
|
||||||
|
CHECK(point)
|
||||||
|
CHECK(pointf)
|
||||||
|
CHECK(polygon)
|
||||||
|
CHECK(polygonf)
|
||||||
CHECK(color)
|
CHECK(color)
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void DataTypesTest::cleanupTestCase()
|
void DataTypesTest::cleanupTestCase()
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,14 @@
|
||||||
#include <QtCore/QObject>
|
#include <QtCore/QObject>
|
||||||
#include <QtCore/qglobal.h>
|
#include <QtCore/qglobal.h>
|
||||||
|
|
||||||
#include <QColor>
|
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
#include <QJsonArray>
|
#include <QJsonArray>
|
||||||
#include <QJsonDocument>
|
#include <QJsonDocument>
|
||||||
#include <QJsonObject>
|
#include <QJsonObject>
|
||||||
|
#ifdef QT_GUI_LIB
|
||||||
|
#include <QColor>
|
||||||
#include <QPolygonF>
|
#include <QPolygonF>
|
||||||
|
#endif
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
#include <QUuid>
|
#include <QUuid>
|
||||||
|
|
||||||
|
|
@ -29,17 +31,11 @@ class DataTypesTest : public QObject
|
||||||
quint64 f_uint64;
|
quint64 f_uint64;
|
||||||
qreal f_real;
|
qreal f_real;
|
||||||
float f_float;
|
float f_float;
|
||||||
QPoint f_point;
|
|
||||||
QPointF f_pointf;
|
|
||||||
QPolygon f_polygon;
|
|
||||||
QPolygonF f_polygonf;
|
|
||||||
QUrl f_url;
|
|
||||||
|
|
||||||
QTime f_time;
|
QTime f_time;
|
||||||
QDate f_date;
|
QDate f_date;
|
||||||
QDateTime f_dateTime;
|
QDateTime f_dateTime;
|
||||||
|
|
||||||
QUuid f_uuid;
|
|
||||||
QJsonDocument f_jsonDoc;
|
QJsonDocument f_jsonDoc;
|
||||||
QJsonObject f_jsonObj;
|
QJsonObject f_jsonObj;
|
||||||
QJsonArray f_jsonArray;
|
QJsonArray f_jsonArray;
|
||||||
|
|
@ -49,7 +45,15 @@ class DataTypesTest : public QObject
|
||||||
QStringList f_stringList;
|
QStringList f_stringList;
|
||||||
|
|
||||||
QChar f_qchar;
|
QChar f_qchar;
|
||||||
|
QUrl f_url;
|
||||||
|
QUuid f_uuid;
|
||||||
|
#ifdef QT_GUI_LIB
|
||||||
|
QPoint f_point;
|
||||||
|
QPointF f_pointf;
|
||||||
|
QPolygon f_polygon;
|
||||||
|
QPolygonF f_polygonf;
|
||||||
QColor f_color;
|
QColor f_color;
|
||||||
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit DataTypesTest(QObject *parent = nullptr);
|
explicit DataTypesTest(QObject *parent = nullptr);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue