Added practically everything I wanted to have in except for updating
columns.
Needed to name the schema namespace as Orm::SchemaNs to avoid collision
with the Orm::Schema class.
- unit tests with great coverage
- new schema constants
- a new prefix_indexes and engine DB conncetion configurations
Others:
- IsModel tag
- enhanced columnize in the BaseGrammar
- used a new columnize logic in all grammars
- new constants
- new container utils class for joining containers
- new DB::driver() getter for QSqlDriver
- avoid possible crash in tests with pretend, added empty log checks
- clang tidy, excluded to word from short variable names
- added connectEagerly() that allows to force connection to the DB
- added isOpen()
- exposed isOpen()/connectEagerly()/pingDatabase() to DB and
DatabaseManager
Used __has_include() in #if macro directives instead of checking
_MSC_VER or __MINGW32__ to include mysql.h file.
- also modified #error directive calls
- bugfix reset transactions when lost connection occurs during
commit()/rollBack()/savepoint()/rollBackToSavepoint() method calls
- enhanced beginTransaction(), reconnect when connection was lost
Refactored from an unique_ptr to shared_ptr, I think this is a better
approach. Now it will be clear that a few DatabaseManager pointers are
stored somewhere in the TinyORM.
- return std:shared_ptr from DatabaseManager factory methods
- store a shared_ptr<DatabaseManager> in private data members in
DatabaseManager and DB classes
In the release build HasRelationStore::m_relationStore will be always
empty during copied/moved operation.
In the debug mode are enabled Q_ASSERT() checks to inform a user.
A Model class can not be copied/moved during any HasRelationStore
operation.
Transactions extracted to the Concerns::ManagesTransactions base class.
- bugfix includes
- logConnected()/logDisconnected() code wrapped in TINYORM_MYSQL_PING
- hitTransactionalCounters() extracted to Concerns::CountsQueries
- convertNamedToPositionalBindings() extracted to Concerns::LogsQueries