data types test 2

This commit is contained in:
Hamed Masafi 2019-01-20 20:25:32 +03:30
parent e75f4f1da7
commit 4e08afb8a6
6 changed files with 81 additions and 9 deletions

View File

@ -34,7 +34,7 @@ QString SqliteGenerator::fieldType(FieldModel *field)
QString ret = field->name + " ";
QString dbType;
switch (static_cast<QMetaType::Type>(field->type)) {
switch (field->type) {
case QMetaType::Bool: return "BOOLEAN";
case QMetaType::QByteArray: return "BLOB";
case QMetaType::QDate: return "DATE";
@ -55,17 +55,26 @@ QString SqliteGenerator::fieldType(FieldModel *field)
case QMetaType::LongLong: return "BIGINT";
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";
// if (field->isAutoIncrement)
// dbType.append(" PRIMARY KEY AUTOINCREMENT");
case QMetaType::QString:
if(field->length)
return QString("VARCHAR(%1)").arg(field->length);
else
return "TEXT";
default:
qDebug() << "The type (" << field->type << ") does not supported";
qWarning("The type (%s) does not supported",
QMetaType::typeName(field->type));
return QString();
}
}

View File

@ -29,7 +29,7 @@ NUT_BEGIN_NAMESPACE
class SqliteGenerator : public SqlGeneratorBase
{
public:
explicit SqliteGenerator(Database *parent = 0);
explicit SqliteGenerator(Database *parent = nullptr);
QString fieldType(FieldModel *field);

View File

@ -219,7 +219,7 @@ TableModel::TableModel(int typeId, QString tableName)
f = fieldObj;
if(!fieldObj)
continue;
fieldObj->type = fieldProperty.type();
fieldObj->type = static_cast<QMetaType::Type>(fieldProperty.type());
fieldObj->typeName = QString(fieldProperty.typeName());
}
@ -303,7 +303,8 @@ TableModel::TableModel(QJsonObject json, QString tableName)
QJsonObject fieldObject = fields.value(key).toObject();
FieldModel *f = new FieldModel;
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))
f->notNull = fieldObject.value(__nut_NOT_NULL).toBool();
@ -414,7 +415,7 @@ QString TableModel::primaryKey() const
FieldModel::FieldModel(const QJsonObject &json)
{
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();
notNull = json.value(__nut_NOT_NULL).toBool();
isAutoIncrement = json.value(__nut_AUTO_INCREMENT).toBool();

View File

@ -40,8 +40,7 @@ struct FieldModel{
explicit FieldModel(const QJsonObject &json);
QString name;
//TODO: QMetaType::Type??
QVariant::Type type;
QMetaType::Type type;
QString typeName;
int length;
QString defaultValue;

View File

@ -13,6 +13,9 @@
#include "sampletable.h"
#include "generators/sqlitegenerator.h"
#include "generators/sqlservergenerator.h"
#define PRINT(x) qDebug() << #x "=" << x;
#define TIC() QElapsedTimer timer; timer.start()
#define TOC() qDebug() << QString("Elapsed time: %1ms for %2") \
@ -43,7 +46,66 @@ void MainTest::initTestCase()
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++)
// qDebug() << en.value(i);
}

View File

@ -10,6 +10,7 @@ class MainTest : public QObject
Q_OBJECT
DB db;
// void test_generator();
public:
explicit MainTest(QObject *parent = nullptr);