From ec449b0c8f9216b5dddfe00665f38861dcf1001d Mon Sep 17 00:00:00 2001 From: Hamed Masafi Date: Wed, 19 Jun 2019 17:38:09 +0430 Subject: [PATCH] all supported datatypes in full list markdown [skip ci] --- README.md | 46 +-------- doc/datatypes.md | 41 ++++++++ test/common/comment.h | 4 +- test/common/score.h | 5 +- test/test.pro | 5 +- .../tst_supported_datatypes.cpp | 98 +++++++++++++++++++ .../tst_supported_datatypes.h | 38 +++++++ .../tst_supported_datatypes.pro | 18 ++++ 8 files changed, 203 insertions(+), 52 deletions(-) create mode 100644 doc/datatypes.md create mode 100644 test/tst_supported_datatypes/tst_supported_datatypes.cpp create mode 100644 test/tst_supported_datatypes/tst_supported_datatypes.h create mode 100644 test/tst_supported_datatypes/tst_supported_datatypes.pro diff --git a/README.md b/README.md index 8eacca4..d08d7e9 100644 --- a/README.md +++ b/README.md @@ -23,51 +23,7 @@ Badge](https://api.codacy.com/project/badge/Grade/f3802610beb946068f6cd2c2b6608a - Automatically create and update database - IDE auto complete support, No hard-code nedded - Table join detect - - Supported types: - -| Type | Sqlite | MySql | Postgresql| Ms Sql server | -|--------|--------|--------|--------|--------| -| QBitArray | BLOB | VARBINARY | BYTEA | VARBINARY (MAX) | -| QByteArray | BLOB | BLOB | BYTEA | VARBINARY (MAX) | -| QChar | NCHAR(1) | CHAR(1) | CHAR(1) | CHAR(1) | -| QColor | TEXT | TEXT | TEXT | TEXT | -| QDate | DATE | DATE | DATE | DATE | -| QDateTime | DATETIME | DATETIME | TIMESTAMP | DATETIME | -| QJsonArray | TEXT | TEXT | JSON | TEXT | -| QJsonDocument | TEXT | TEXT | JSON | TEXT | -| QJsonObject | TEXT | TEXT | JSON | TEXT | -| QJsonValue | TEXT | TEXT | JSON | TEXT | -| QLine | TEXT | TEXT | LINE | TEXT | -| QLineF | TEXT | TEXT | LINE | TEXT | -| QPoint | TEXT | POINT | POINT | GEOMETRY | -| QPointF | TEXT | POINT | POINT | GEOMETRY | -| QPolygon | TEXT | POLYGON | POLYGON | TEXT | -| QPolygonF | TEXT | POLYGON | POLYGON | TEXT | -| QRect | TEXT | TEXT | BOX | TEXT | -| QRectF | TEXT | TEXT | BOX | TEXT | -| QSize | TEXT | TEXT | TEXT | TEXT | -| QSizeF | TEXT | TEXT | TEXT | TEXT | -| QString | TEXT | TEXT | TEXT | NVARCHAR(MAX) | -| QStringList | TEXT[^*] | TEXT | TEXT[] | TEXT | -| QTime | TIME | TIME | TIME | TIME | -| QUrl | TEXT | TEXT | TEXT | TEXT | -| QUuid | TEXT | VARCHAR(64) | UUID | UNIQUEIDENTIFIER | -| bool | BOOLEAN | BOOLEAN | BOOLEAN | BIT | -| char | TINYINT | CHAR(1) | CHAR(1) | CHAR(1) | -| double | DOUBLE | REAL | REAL | REAL | -| float | FLOAT | FLOAT | FLOAT | FLOAT(24) | -| int | INT | INT | INTEGER | INT | -| long | MEDIUMINT | BIGINT | BIGINT | BIGINT | -| qlonglong | BIGINT | BIGINT | BIGINT | BIGINT | -| qulonglong | BIGINT UNSIGNED | BIGINT | BIGINT | BIGINT | -| short | SMALLINT | SMALLINT | SMALLINT | SMALLINT | -| signed char | TINYINT | TINYINT | SMALLINT | TINYINT | -| uchar | TINYINT UNSIGNED | TINYINT | SMALLINT | TINYINT | -| uint | INT UNSIGNED | INT | INTEGER | INT | -| ulong | MEDIUMINT UNSIGNED | BIGINT | BIGINT | BIGINT | -| ushort | SMALLINT UNSIGNED | SMALLINT | SMALLINT | SMALLINT | - -[^*]: Using internal store/restore serialization + - Supported types: [Full list](doc/datatypes.md) ## Sample Codes diff --git a/doc/datatypes.md b/doc/datatypes.md new file mode 100644 index 0000000..a4bc9e7 --- /dev/null +++ b/doc/datatypes.md @@ -0,0 +1,41 @@ +| Type | Sqlite | MySql | Postgresql| Ms Sql server | +|--------|--------|--------|--------|--------| +| bool | BOOLEAN | BOOLEAN | BOOLEAN | BIT | +| QBitArray | BLOB | VARBINARY | BYTEA | VARBINARY (MAX) | +| QByteArray | BLOB | BLOB | BYTEA | VARBINARY (MAX) | +| QDate | DATE | DATE | DATE | DATE | +| QDateTime | DATETIME | DATETIME | TIMESTAMP | DATETIME | +| QTime | TIME | TIME | TIME | TIME | +| double | DOUBLE | REAL | REAL | REAL | +| float | FLOAT | FLOAT | FLOAT | FLOAT(24) | +| signed char | TINYINT | TINYINT | SMALLINT | tinyint | +| char | TINYINT | CHAR(1) | CHAR(1) | CHAR(1) | +| uchar | TINYINT UNSIGNED | TINYINT | SMALLINT | tinyint | +| short | SMALLINT | SMALLINT | SMALLINT | smallint | +| ushort | SMALLINT UNSIGNED | SMALLINT | SMALLINT | smallint | +| int | INT | INT | INTEGER | INT | +| uint | INT UNSIGNED | INT | INTEGER | INT | +| long | MEDIUMINT | BIGINT | BIGINT | bigint | +| ulong | MEDIUMINT UNSIGNED | BIGINT | BIGINT | bigint | +| qlonglong | BIGINT | BIGINT | BIGINT | bigint | +| qulonglong | BIGINT UNSIGNED | BIGINT | BIGINT | bigint | +| QChar | NCHAR(1) | CHAR(1) | CHAR(1) | CHAR(1) | +| QUrl | TEXT | TEXT | TEXT | TEXT | +| QJsonArray | TEXT | TEXT | JSONB | TEXT | +| QJsonValue | TEXT | TEXT | JSONB | TEXT | +| QJsonObject | TEXT | TEXT | JSONB | TEXT | +| QJsonDocument | TEXT | TEXT | JSONB | TEXT | +| QPoint | TEXT | TEXT | POINT | GEOMETRY | +| QPointF | TEXT | TEXT | POINT | GEOMETRY | +| QSize | TEXT | TEXT | TEXT | TEXT | +| QSizeF | TEXT | TEXT | TEXT | TEXT | +| QLine | TEXT | TEXT | LINE | TEXT | +| QLineF | TEXT | TEXT | LINE | TEXT | +| QRect | TEXT | TEXT | BOX | TEXT | +| QRectF | TEXT | TEXT | BOX | TEXT | +| QPolygon | TEXT | TEXT | POLYGON | TEXT | +| QPolygonF | TEXT | TEXT | POLYGON | TEXT | +| QStringList | TEXT | TEXT | TEXT[] | TEXT | +| QColor | TEXT | TEXT | TEXT | TEXT | +| QUuid | TEXT | TEXT | UUID | UNIQUEIDENTIFIER | +| QString | TEXT | TEXT | TEXT | NVARCHAR(MAX) | diff --git a/test/common/comment.h b/test/common/comment.h index 437aa20..83fd55b 100644 --- a/test/common/comment.h +++ b/test/common/comment.h @@ -21,8 +21,8 @@ class Comment : public Table NUT_DECLARE_FIELD(QDateTime, saveDate, saveDate, setSaveDate) NUT_DECLARE_FIELD(qreal, point, point, setPoint) - NUT_FOREGION_KEY(Post, int, post, post, setPost) - NUT_FOREGION_KEY(User, int, author, author, setAuthor) + NUT_FOREIGN_KEY(Post, int, post, post, setPost) + NUT_FOREIGN_KEY(User, int, author, author, setAuthor) public: Q_INVOKABLE explicit Comment(QObject *parentTableSet = nullptr); diff --git a/test/common/score.h b/test/common/score.h index 72d907b..a87fa08 100644 --- a/test/common/score.h +++ b/test/common/score.h @@ -1,6 +1,7 @@ #ifndef SCORE_H #define SCORE_H +#include #include "table.h" class User; @@ -14,8 +15,8 @@ class Score : public Nut::Table NUT_DECLARE_FIELD(int, score, score, setScore) - NUT_FOREGION_KEY(Post, int, post, post, setPost) - NUT_FOREGION_KEY(User, QUuid, author, author, setAuthor) + NUT_FOREIGN_KEY(Post, int, post, post, setPost) + NUT_FOREIGN_KEY(User, QUuid, author, author, setAuthor) public: Q_INVOKABLE Score(QObject *parent = Q_NULLPTR); diff --git a/test/test.pro b/test/test.pro index 504a9c5..8f182da 100644 --- a/test/test.pro +++ b/test/test.pro @@ -3,12 +3,11 @@ TEMPLATE = subdirs SUBDIRS += \ tst_basic \ tst_benckmark \ -# tst_commands \ tst_datatypes \ - #tst_join \ tst_phrases \ tst_quuid \ tst_generators \ tst_upgrades \ - tst_json + tst_json \ + tst_supported_datatypes diff --git a/test/tst_supported_datatypes/tst_supported_datatypes.cpp b/test/tst_supported_datatypes/tst_supported_datatypes.cpp new file mode 100644 index 0000000..f9222b2 --- /dev/null +++ b/test/tst_supported_datatypes/tst_supported_datatypes.cpp @@ -0,0 +1,98 @@ +#include +#include +#include +#include +#include + +#include "tst_supported_datatypes.h" + +#include "generators/sqlitegenerator.h" +#include "generators/postgresqlgenerator.h" +#include "generators/mysqlgenerator.h" +#include "generators/sqlservergenerator.h" + +SupportedDataTypesTest::SupportedDataTypesTest(QObject *parent) : QObject(parent) +{ + types + << QMetaType::Bool + << QMetaType::QBitArray + << QMetaType::QByteArray + << QMetaType::QDate + << QMetaType::QDateTime + << QMetaType::QTime + << QMetaType::Double + << QMetaType::Float + + << QMetaType::SChar + << QMetaType::Char + << QMetaType::UChar + << QMetaType::Short + << QMetaType::UShort + << QMetaType::Int + << QMetaType::UInt + << QMetaType::Long + << QMetaType::ULong + << QMetaType::LongLong + << QMetaType::ULongLong + + << QMetaType::QChar + + << QMetaType::QUrl + << QMetaType::QJsonArray + << QMetaType::QJsonValue + << QMetaType::QJsonObject + << QMetaType::QJsonDocument + << QMetaType::QPoint + << QMetaType::QPointF + << QMetaType::QSize + << QMetaType::QSizeF + << QMetaType::QLine + << QMetaType::QLineF + << QMetaType::QRect + << QMetaType::QRectF + << QMetaType::QPolygon + << QMetaType::QPolygonF + << QMetaType::QStringList + << QMetaType::QColor + << QMetaType::QUuid + + << QMetaType::QString; +} + +void SupportedDataTypesTest::initTestCase() +{ + Nut::SqliteGenerator sqlite; + Nut::SqlServerGenerator mssql; + Nut::PostgreSqlGenerator pgsql; + Nut::MySqlGenerator mysql; + + Nut::FieldModel *field = new Nut::FieldModel; + foreach (QMetaType::Type type, types) { + field->type = type; + result.append(Result( + type, + mssql.fieldType(field), + sqlite.fieldType(field), + pgsql.fieldType(field), + mysql.fieldType(field) + )); + } +} + +void SupportedDataTypesTest::cleanupTestCase() +{ + qDebug() << DOC_PATH; + QString md("| Type | Sqlite | MySql | Postgresql| Ms Sql server |\n"); + md.append("|--------|--------|--------|--------|--------|\n"); + foreach (Result r, result) + md.append(QString("| %1 | %2 | %3 | %4 | %5 |\n") + .arg(QMetaType::typeName(r.type), r.sqlite, r.mysql, r.pgsql, r.mssql)); + + QFile file(DOC_PATH "/datatypes.md"); + if (file.open(QIODevice::WriteOnly)) { + file.write(md.toUtf8()); + file.close(); + } +} + +QTEST_MAIN(SupportedDataTypesTest) diff --git a/test/tst_supported_datatypes/tst_supported_datatypes.h b/test/tst_supported_datatypes/tst_supported_datatypes.h new file mode 100644 index 0000000..2ce7f03 --- /dev/null +++ b/test/tst_supported_datatypes/tst_supported_datatypes.h @@ -0,0 +1,38 @@ +#ifndef MAINTEST_H +#define MAINTEST_H + +#include +#include + +class SupportedDataTypesTest : public QObject +{ + Q_OBJECT + QList types; + + struct Result + { + QMetaType::Type type; + QString mssql; + QString sqlite; + QString pgsql; + QString mysql; + + Result(QMetaType::Type type, QString mssql, QString sqlite, + QString pgsql, QString mysql) + : type(type), mssql(mssql), sqlite(sqlite), pgsql(pgsql), mysql(mysql) + {} + }; + QList result; + +public: + explicit SupportedDataTypesTest(QObject *parent = nullptr); + +signals: + +private slots: + void initTestCase(); + + void cleanupTestCase(); +}; + +#endif // MAINTEST_H diff --git a/test/tst_supported_datatypes/tst_supported_datatypes.pro b/test/tst_supported_datatypes/tst_supported_datatypes.pro new file mode 100644 index 0000000..eb8b996 --- /dev/null +++ b/test/tst_supported_datatypes/tst_supported_datatypes.pro @@ -0,0 +1,18 @@ +QT += testlib sql gui + +TARGET = tst_datatypes +TEMPLATE = app + +CONFIG += warn_on c++11 + +DEFINES += DOC_PATH=\\\"$$PWD/../../doc\\\" + +include(../common/nut-lib.pri) + +SOURCES += \ + tst_supported_datatypes.cpp + +HEADERS += \ + tst_supported_datatypes.h + +include($$PWD/../../ci-test-init.pri)