all supported datatypes in full list markdown [skip ci]

This commit is contained in:
Hamed Masafi 2019-06-19 17:38:09 +04:30
parent 136c393f6e
commit ec449b0c8f
8 changed files with 203 additions and 52 deletions

View File

@ -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

41
doc/datatypes.md Normal file
View File

@ -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) |

View File

@ -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);

View File

@ -1,6 +1,7 @@
#ifndef SCORE_H
#define SCORE_H
#include <QUuid>
#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);

View File

@ -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

View File

@ -0,0 +1,98 @@
#include <QtTest>
#include <QDebug>
#include <QSqlError>
#include <QElapsedTimer>
#include <tablemodel.h>
#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)

View File

@ -0,0 +1,38 @@
#ifndef MAINTEST_H
#define MAINTEST_H
#include <QtCore/QObject>
#include <QtCore/qglobal.h>
class SupportedDataTypesTest : public QObject
{
Q_OBJECT
QList<QMetaType::Type> 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> result;
public:
explicit SupportedDataTypesTest(QObject *parent = nullptr);
signals:
private slots:
void initTestCase();
void cleanupTestCase();
};
#endif // MAINTEST_H

View File

@ -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)