readme table
This commit is contained in:
parent
49f006e2d5
commit
0f32f7af9a
|
|
@ -1 +1 @@
|
|||
Subproject commit 7f4a9a2a5f3eec799e4253259df4b87a98a1b9ee
|
||||
Subproject commit 1d3495bed909392cdf128e8ef6f8b3986b2c09b5
|
||||
48
README.md
48
README.md
|
|
@ -1,3 +1,5 @@
|
|||
|
||||
|
||||
# Nut
|
||||
|
||||
## Build result
|
||||
|
|
@ -17,6 +19,52 @@
|
|||
- 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
|
||||
|
||||
|
||||
## Sample Codes
|
||||
### Read data from database:
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ GeneratorsTest::GeneratorsTest(QObject *parent) : QObject(parent)
|
|||
}
|
||||
|
||||
|
||||
void GeneratorsTest::types(Nut::SqlGeneratorBase *g)
|
||||
void GeneratorsTest::types(Nut::SqlGeneratorBase *g, QString name)
|
||||
{
|
||||
QList<QMetaType::Type> types;
|
||||
types
|
||||
|
|
@ -89,6 +89,12 @@ void GeneratorsTest::types(Nut::SqlGeneratorBase *g)
|
|||
m.type = t;
|
||||
QString fn = g->fieldType(&m);
|
||||
|
||||
QString tn = QString(QMetaType::typeName(t));
|
||||
if (!table.contains(tn))
|
||||
table.insert(tn, row());
|
||||
|
||||
table[tn].set(name, fn);
|
||||
|
||||
if (fn.isEmpty())
|
||||
qDebug() << "No rule for" << t << "(" << QMetaType::typeName(t) << ")";
|
||||
Q_ASSERT(!fn.isEmpty());
|
||||
|
|
@ -98,31 +104,44 @@ void GeneratorsTest::types(Nut::SqlGeneratorBase *g)
|
|||
void GeneratorsTest::test_sqlite()
|
||||
{
|
||||
auto g = new Nut::SqliteGenerator;
|
||||
types(g);
|
||||
types(g, "sqlite");
|
||||
g->deleteLater();
|
||||
}
|
||||
|
||||
void GeneratorsTest::test_sqlserver()
|
||||
{
|
||||
auto g = new Nut::SqlServerGenerator;
|
||||
types(g);
|
||||
types(g, "mssql");
|
||||
g->deleteLater();
|
||||
}
|
||||
|
||||
void GeneratorsTest::test_psql()
|
||||
{
|
||||
auto g = new Nut::PostgreSqlGenerator;
|
||||
types(g);
|
||||
types(g, "psql");
|
||||
g->deleteLater();
|
||||
}
|
||||
|
||||
void GeneratorsTest::test_mysql()
|
||||
{
|
||||
auto g = new Nut::MySqlGenerator;
|
||||
types(g);
|
||||
types(g, "mysql");
|
||||
g->deleteLater();
|
||||
}
|
||||
|
||||
void GeneratorsTest::cleanupTestCase()
|
||||
{
|
||||
QMap<QString, row>::const_iterator i;
|
||||
QString p = "\n| Type | Sqlite | MySql | Postgresql| Ms Sql server |"
|
||||
"\n|--------|--------|--------|--------|--------|";
|
||||
for (i = table.constBegin(); i != table.constEnd(); ++i) {
|
||||
p.append(QString("\n|%1|%2|%3|%4|%5|")
|
||||
.arg(i.key(), i.value().sqlite, i.value().mysql,
|
||||
i.value().psql, i.value().mssql));
|
||||
}
|
||||
qDebug() << p.toStdString().c_str();
|
||||
}
|
||||
|
||||
QTEST_MAIN(GeneratorsTest)
|
||||
|
||||
//#include "tst_GeneratorsTest.moc"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#ifndef TST_GENERATORS_H
|
||||
#define TST_GENERATORS_H
|
||||
|
||||
#include <QMap>
|
||||
#include <QObject>
|
||||
|
||||
namespace Nut {
|
||||
|
|
@ -11,10 +12,28 @@ class GeneratorsTest : public QObject
|
|||
{
|
||||
Q_OBJECT
|
||||
|
||||
struct row {
|
||||
QString sqlite;
|
||||
QString psql;
|
||||
QString mysql;
|
||||
QString mssql;
|
||||
void set(QString name, QString value) {
|
||||
if (name == "sqlite")
|
||||
sqlite = value.toUpper();
|
||||
else if (name == "psql")
|
||||
psql = value.toUpper();
|
||||
else if (name == "mysql")
|
||||
mysql = value.toUpper();
|
||||
else if (name == "mssql")
|
||||
mssql = value.toUpper();
|
||||
}
|
||||
};
|
||||
QMap<QString, row> table;
|
||||
|
||||
public:
|
||||
explicit GeneratorsTest(QObject *parent = nullptr);
|
||||
|
||||
void types(Nut::SqlGeneratorBase *g);
|
||||
void types(Nut::SqlGeneratorBase *g, QString name);
|
||||
|
||||
private slots:
|
||||
void test_sqlite();
|
||||
|
|
@ -22,6 +41,8 @@ private slots:
|
|||
void test_sqlserver();
|
||||
void test_mysql();
|
||||
|
||||
void cleanupTestCase();
|
||||
|
||||
};
|
||||
|
||||
#endif // TST_GENERATORS_H
|
||||
|
|
|
|||
Loading…
Reference in New Issue