diff --git a/docs/building-migrations.mdx b/docs/building-migrations.mdx index cd18ca16f..ef84a8d25 100644 --- a/docs/building-migrations.mdx +++ b/docs/building-migrations.mdx @@ -132,6 +132,8 @@ To paste a source code correctly in `vim`, press Shift + p And paste the following code. + + #include #include @@ -186,7 +188,7 @@ And paste the following code. {password_, qEnvironmentVariable("DB_MYSQL_PASSWORD", EMPTY)}, {charset_, qEnvironmentVariable("DB_MYSQL_CHARSET", UTF8MB4)}, {collation_, qEnvironmentVariable("DB_MYSQL_COLLATION", UTF8MB40900aici)}, - {timezone_, SYSTEM}, + {timezone_, TZ00}, {prefix_, EMPTY}, {prefix_indexes, true}, {strict_, true}, diff --git a/docs/database.mdx b/docs/database.mdx index 140f17c2b..6308b1eb9 100644 --- a/docs/database.mdx +++ b/docs/database.mdx @@ -58,6 +58,10 @@ You can also configure [Transaction Isolation Levels](https://dev.mysql.com/doc/ A database connection is resolved lazily, which means that the connection configuration is only saved after the `DB::create` method call. The connection will be resolved after you run some query or you can create it using the `DB::connection` method. ::: +:::tip +You can also use predefined string constants to avoid unnecessary `QString` instantiations, as used in the `tom` migrations [example](building-migrations.mdx#string-constants-example). +::: + #### SQLite Configuration SQLite databases are contained within a single file on your filesystem. You can create a new SQLite database using the `touch` command in your terminal: `touch database.sqlite3`. After the database has been created, you may configure SQLite database connection: diff --git a/examples/tom/main.cpp b/examples/tom/main.cpp index 992413033..3cbfe81f9 100644 --- a/examples/tom/main.cpp +++ b/examples/tom/main.cpp @@ -9,30 +9,6 @@ #include "seeders/databaseseeder.hpp" -using Orm::Constants::EMPTY; -using Orm::Constants::H127001; -using Orm::Constants::P3306; -using Orm::Constants::QMYSQL; -using Orm::Constants::SYSTEM; -using Orm::Constants::UTF8MB4; -using Orm::Constants::UTF8MB40900aici; -using Orm::Constants::charset_; -using Orm::Constants::collation_; -using Orm::Constants::database_; -using Orm::Constants::driver_; -using Orm::Constants::engine_; -using Orm::Constants::host_; -using Orm::Constants::InnoDB; -using Orm::Constants::isolation_level; -using Orm::Constants::options_; -using Orm::Constants::password_; -using Orm::Constants::port_; -using Orm::Constants::prefix_; -using Orm::Constants::prefix_indexes; -using Orm::Constants::strict_; -using Orm::Constants::timezone_; -using Orm::Constants::username_; - using Orm::DatabaseManager; using Orm::DB; @@ -87,6 +63,8 @@ int main(int argc, char *argv[]) std::shared_ptr setupManager() { + using namespace Orm::Constants; // NOLINT(google-build-using-namespace) + // Ownership of the shared_ptr() return DB::create({ {driver_, QMYSQL}, @@ -97,7 +75,7 @@ std::shared_ptr setupManager() {password_, qEnvironmentVariable("DB_MYSQL_PASSWORD", EMPTY)}, {charset_, qEnvironmentVariable("DB_MYSQL_CHARSET", UTF8MB4)}, {collation_, qEnvironmentVariable("DB_MYSQL_COLLATION", UTF8MB40900aici)}, - {timezone_, SYSTEM}, + {timezone_, TZ00}, {prefix_, EMPTY}, {prefix_indexes, true}, {strict_, true}, diff --git a/include/orm/constants_extern.hpp b/include/orm/constants_extern.hpp index 09cb1caa5..1f0f73a1c 100644 --- a/include/orm/constants_extern.hpp +++ b/include/orm/constants_extern.hpp @@ -88,6 +88,7 @@ namespace Orm::Constants SHAREDLIB_EXPORT extern const QString UTC; SHAREDLIB_EXPORT extern const QString LOCAL; SHAREDLIB_EXPORT extern const QString SYSTEM; + SHAREDLIB_EXPORT extern const QString TZ00; SHAREDLIB_EXPORT extern const QString PUBLIC; SHAREDLIB_EXPORT extern const QString UTF8; SHAREDLIB_EXPORT extern const QString UTF8MB4; diff --git a/include/orm/constants_inline.hpp b/include/orm/constants_inline.hpp index 5e72f083e..77271ae16 100644 --- a/include/orm/constants_inline.hpp +++ b/include/orm/constants_inline.hpp @@ -92,6 +92,7 @@ namespace Orm::Constants inline const QString UTC = QStringLiteral("UTC"); inline const QString LOCAL = QStringLiteral("LOCAL"); inline const QString SYSTEM = QStringLiteral("SYSTEM"); + inline const QString TZ00 = QStringLiteral("+00:00"); inline const QString PUBLIC = QStringLiteral("public"); inline const QString UTF8 = QStringLiteral("utf8"); inline const QString UTF8MB4 = QStringLiteral("utf8mb4"); diff --git a/src/orm/constants_extern.cpp b/src/orm/constants_extern.cpp index eac8ac383..58da11b2f 100644 --- a/src/orm/constants_extern.cpp +++ b/src/orm/constants_extern.cpp @@ -77,6 +77,7 @@ namespace Orm::Constants const QString UTC = QStringLiteral("UTC"); const QString LOCAL = QStringLiteral("LOCAL"); const QString SYSTEM = QStringLiteral("SYSTEM"); + const QString TZ00 = QStringLiteral("+00:00"); const QString PUBLIC = QStringLiteral("public"); const QString UTF8 = QStringLiteral("utf8"); const QString UTF8MB4 = QStringLiteral("utf8mb4"); diff --git a/tests/TinyUtils/src/databases.cpp b/tests/TinyUtils/src/databases.cpp index ee40da3ef..0c3b62cee 100644 --- a/tests/TinyUtils/src/databases.cpp +++ b/tests/TinyUtils/src/databases.cpp @@ -33,6 +33,7 @@ using Orm::Constants::strict_; using Orm::Constants::timezone_; using Orm::Constants::username_; using Orm::Constants::EMPTY; +using Orm::Constants::TZ00; using Orm::Constants::UTC; using Orm::Constants::UTF8; using Orm::Constants::UTF8MB4; @@ -165,7 +166,7 @@ Databases::mysqlConfiguration() {charset_, qEnvironmentVariable("DB_MYSQL_CHARSET", UTF8MB4)}, {collation_, qEnvironmentVariable("DB_MYSQL_COLLATION", UTF8MB40900aici)}, // Very important for tests - {timezone_, QStringLiteral("+00:00")}, + {timezone_, TZ00}, {prefix_, EMPTY}, {prefix_indexes, true}, {strict_, true}, diff --git a/tests/testdata_tom/main.cpp b/tests/testdata_tom/main.cpp index 624aef77b..a2d534621 100644 --- a/tests/testdata_tom/main.cpp +++ b/tests/testdata_tom/main.cpp @@ -18,29 +18,6 @@ #include "seeders/databaseseeder.hpp" -using Orm::Constants::EMPTY; -using Orm::Constants::H127001; -using Orm::Constants::P3306; -using Orm::Constants::QMYSQL; -using Orm::Constants::UTF8MB4; -using Orm::Constants::UTF8MB40900aici; -using Orm::Constants::charset_; -using Orm::Constants::collation_; -using Orm::Constants::database_; -using Orm::Constants::driver_; -using Orm::Constants::engine_; -using Orm::Constants::host_; -using Orm::Constants::InnoDB; -using Orm::Constants::isolation_level; -using Orm::Constants::options_; -using Orm::Constants::password_; -using Orm::Constants::port_; -using Orm::Constants::prefix_; -using Orm::Constants::prefix_indexes; -using Orm::Constants::strict_; -using Orm::Constants::timezone_; -using Orm::Constants::username_; - using Orm::DatabaseManager; using Orm::DB; @@ -87,6 +64,8 @@ int main(int argc, char *argv[]) std::shared_ptr setupManager() { + using namespace Orm::Constants; // NOLINT(google-build-using-namespace) + // Ownership of the shared_ptr() return DB::create({ {driver_, QMYSQL}, @@ -97,7 +76,7 @@ std::shared_ptr setupManager() {password_, qEnvironmentVariable("DB_MYSQL_PASSWORD", EMPTY)}, {charset_, qEnvironmentVariable("DB_MYSQL_CHARSET", UTF8MB4)}, {collation_, qEnvironmentVariable("DB_MYSQL_COLLATION", UTF8MB40900aici)}, - {timezone_, QStringLiteral("+00:00")}, + {timezone_, TZ00}, {prefix_, EMPTY}, {prefix_indexes, true}, {strict_, true},