data types test 2
This commit is contained in:
parent
e75f4f1da7
commit
4e08afb8a6
|
|
@ -34,7 +34,7 @@ QString SqliteGenerator::fieldType(FieldModel *field)
|
||||||
QString ret = field->name + " ";
|
QString ret = field->name + " ";
|
||||||
QString dbType;
|
QString dbType;
|
||||||
|
|
||||||
switch (static_cast<QMetaType::Type>(field->type)) {
|
switch (field->type) {
|
||||||
case QMetaType::Bool: return "BOOLEAN";
|
case QMetaType::Bool: return "BOOLEAN";
|
||||||
case QMetaType::QByteArray: return "BLOB";
|
case QMetaType::QByteArray: return "BLOB";
|
||||||
case QMetaType::QDate: return "DATE";
|
case QMetaType::QDate: return "DATE";
|
||||||
|
|
@ -55,17 +55,26 @@ QString SqliteGenerator::fieldType(FieldModel *field)
|
||||||
case QMetaType::LongLong: return "BIGINT";
|
case QMetaType::LongLong: return "BIGINT";
|
||||||
case QMetaType::ULongLong: return "BIGINT UNSIGNED";
|
case QMetaType::ULongLong: return "BIGINT UNSIGNED";
|
||||||
|
|
||||||
|
case QMetaType::QChar: return "NCHAR(1)";
|
||||||
|
|
||||||
|
case QMetaType::QUrl:
|
||||||
|
case QMetaType::QJsonArray:
|
||||||
|
case QMetaType::QJsonValue:
|
||||||
|
case QMetaType::QJsonObject:
|
||||||
|
case QMetaType::QJsonDocument:
|
||||||
case QMetaType::QUuid: return "text";
|
case QMetaType::QUuid: return "text";
|
||||||
|
|
||||||
// if (field->isAutoIncrement)
|
// if (field->isAutoIncrement)
|
||||||
// dbType.append(" PRIMARY KEY AUTOINCREMENT");
|
// dbType.append(" PRIMARY KEY AUTOINCREMENT");
|
||||||
|
|
||||||
case QMetaType::QString:
|
case QMetaType::QString:
|
||||||
if(field->length)
|
if(field->length)
|
||||||
return QString("VARCHAR(%1)").arg(field->length);
|
return QString("VARCHAR(%1)").arg(field->length);
|
||||||
else
|
else
|
||||||
return "TEXT";
|
return "TEXT";
|
||||||
default:
|
default:
|
||||||
qDebug() << "The type (" << field->type << ") does not supported";
|
qWarning("The type (%s) does not supported",
|
||||||
|
QMetaType::typeName(field->type));
|
||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ NUT_BEGIN_NAMESPACE
|
||||||
class SqliteGenerator : public SqlGeneratorBase
|
class SqliteGenerator : public SqlGeneratorBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit SqliteGenerator(Database *parent = 0);
|
explicit SqliteGenerator(Database *parent = nullptr);
|
||||||
|
|
||||||
QString fieldType(FieldModel *field);
|
QString fieldType(FieldModel *field);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -219,7 +219,7 @@ TableModel::TableModel(int typeId, QString tableName)
|
||||||
f = fieldObj;
|
f = fieldObj;
|
||||||
if(!fieldObj)
|
if(!fieldObj)
|
||||||
continue;
|
continue;
|
||||||
fieldObj->type = fieldProperty.type();
|
fieldObj->type = static_cast<QMetaType::Type>(fieldProperty.type());
|
||||||
fieldObj->typeName = QString(fieldProperty.typeName());
|
fieldObj->typeName = QString(fieldProperty.typeName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -303,7 +303,8 @@ TableModel::TableModel(QJsonObject json, QString tableName)
|
||||||
QJsonObject fieldObject = fields.value(key).toObject();
|
QJsonObject fieldObject = fields.value(key).toObject();
|
||||||
FieldModel *f = new FieldModel;
|
FieldModel *f = new FieldModel;
|
||||||
f->name = fieldObject.value(__NAME).toString();
|
f->name = fieldObject.value(__NAME).toString();
|
||||||
f->type = QVariant::nameToType(fieldObject.value(__TYPE).toString().toLatin1().data());
|
f->type = static_cast<QMetaType::Type>(QMetaType::type(fieldObject.value(__TYPE).toString().toLatin1().data()));
|
||||||
|
f->typeName = QMetaType::typeName(f->type);
|
||||||
|
|
||||||
if(fieldObject.contains(__nut_NOT_NULL))
|
if(fieldObject.contains(__nut_NOT_NULL))
|
||||||
f->notNull = fieldObject.value(__nut_NOT_NULL).toBool();
|
f->notNull = fieldObject.value(__nut_NOT_NULL).toBool();
|
||||||
|
|
@ -414,7 +415,7 @@ QString TableModel::primaryKey() const
|
||||||
FieldModel::FieldModel(const QJsonObject &json)
|
FieldModel::FieldModel(const QJsonObject &json)
|
||||||
{
|
{
|
||||||
name = json.value(__NAME).toString();
|
name = json.value(__NAME).toString();
|
||||||
type = static_cast<QVariant::Type>(json.value(__TYPE).toInt());
|
type = static_cast<QMetaType::Type>(json.value(__TYPE).toInt());
|
||||||
length = json.value(__nut_LEN).toInt();
|
length = json.value(__nut_LEN).toInt();
|
||||||
notNull = json.value(__nut_NOT_NULL).toBool();
|
notNull = json.value(__nut_NOT_NULL).toBool();
|
||||||
isAutoIncrement = json.value(__nut_AUTO_INCREMENT).toBool();
|
isAutoIncrement = json.value(__nut_AUTO_INCREMENT).toBool();
|
||||||
|
|
|
||||||
|
|
@ -40,8 +40,7 @@ struct FieldModel{
|
||||||
explicit FieldModel(const QJsonObject &json);
|
explicit FieldModel(const QJsonObject &json);
|
||||||
|
|
||||||
QString name;
|
QString name;
|
||||||
//TODO: QMetaType::Type??
|
QMetaType::Type type;
|
||||||
QVariant::Type type;
|
|
||||||
QString typeName;
|
QString typeName;
|
||||||
int length;
|
int length;
|
||||||
QString defaultValue;
|
QString defaultValue;
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,9 @@
|
||||||
|
|
||||||
#include "sampletable.h"
|
#include "sampletable.h"
|
||||||
|
|
||||||
|
#include "generators/sqlitegenerator.h"
|
||||||
|
#include "generators/sqlservergenerator.h"
|
||||||
|
|
||||||
#define PRINT(x) qDebug() << #x "=" << x;
|
#define PRINT(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() << QString("Elapsed time: %1ms for %2") \
|
||||||
|
|
@ -43,7 +46,66 @@ void MainTest::initTestCase()
|
||||||
|
|
||||||
void MainTest::types()
|
void MainTest::types()
|
||||||
{
|
{
|
||||||
// QMetaEnum en = QMetaEnum::fromType<QMetaType::Type>();
|
QList<QMetaType::Type> types;
|
||||||
|
types
|
||||||
|
<< QMetaType::Bool
|
||||||
|
<< QMetaType::Int
|
||||||
|
<< QMetaType::UInt
|
||||||
|
<< QMetaType::Double
|
||||||
|
<< QMetaType::QChar
|
||||||
|
<< QMetaType::QString
|
||||||
|
<< QMetaType::QByteArray
|
||||||
|
<< QMetaType::Long
|
||||||
|
<< QMetaType::LongLong
|
||||||
|
<< QMetaType::Short
|
||||||
|
<< QMetaType::Char
|
||||||
|
<< QMetaType::ULong
|
||||||
|
<< QMetaType::ULongLong
|
||||||
|
<< QMetaType::UShort
|
||||||
|
<< QMetaType::SChar
|
||||||
|
<< QMetaType::UChar
|
||||||
|
<< QMetaType::Float
|
||||||
|
<< QMetaType::QDate
|
||||||
|
// << QMetaType::QSize
|
||||||
|
<< QMetaType::QTime
|
||||||
|
// << QMetaType::QPolygon
|
||||||
|
// << QMetaType::QPolygonF
|
||||||
|
// << QMetaType::QColor
|
||||||
|
// << QMetaType::QSizeF
|
||||||
|
// << QMetaType::QRectF
|
||||||
|
// << QMetaType::QLine
|
||||||
|
// << QMetaType::QStringList
|
||||||
|
// << QMetaType::QLineF
|
||||||
|
// << QMetaType::QRect
|
||||||
|
// << QMetaType::QPoint
|
||||||
|
<< QMetaType::QUrl
|
||||||
|
<< QMetaType::QDateTime
|
||||||
|
// << QMetaType::QPointF
|
||||||
|
// << QMetaType::QRegion
|
||||||
|
// << QMetaType::QBitArray
|
||||||
|
// << QMetaType::QImage
|
||||||
|
// << QMetaType::QPixmap
|
||||||
|
// << QMetaType::QLocale
|
||||||
|
// << QMetaType::QMatrix
|
||||||
|
// << QMetaType::QMatrix4x4
|
||||||
|
// << QMetaType::QVector2D
|
||||||
|
// << QMetaType::QVector3D
|
||||||
|
// << QMetaType::QVector4D
|
||||||
|
<< QMetaType::QJsonValue
|
||||||
|
<< QMetaType::QJsonObject
|
||||||
|
<< QMetaType::QJsonArray
|
||||||
|
<< QMetaType::QJsonDocument
|
||||||
|
<< QMetaType::QUuid
|
||||||
|
// << QMetaType::QByteArrayList
|
||||||
|
;
|
||||||
|
|
||||||
|
Nut::SqlServerGenerator g;
|
||||||
|
Nut::FieldModel m;
|
||||||
|
foreach (QMetaType::Type t, types) {
|
||||||
|
m.type = t;
|
||||||
|
QString fn = g.fieldType(&m);
|
||||||
|
Q_ASSERT(!fn.isEmpty());
|
||||||
|
}
|
||||||
// for (int i = 0; i < en.keyCount(); i++)
|
// for (int i = 0; i < en.keyCount(); i++)
|
||||||
// qDebug() << en.value(i);
|
// qDebug() << en.value(i);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ class MainTest : public QObject
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
DB db;
|
DB db;
|
||||||
|
|
||||||
|
// void test_generator();
|
||||||
public:
|
public:
|
||||||
explicit MainTest(QObject *parent = nullptr);
|
explicit MainTest(QObject *parent = nullptr);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue