The comparison will not be done twice if the user-defined operator==()
in the Derived model is defined.
Also, added the u_skipCompareDerived that allows to explicitly skip
the Derived comparison logic, it allows to have overloaded operator==().
- added functional tests
- added a new models
The QT_LEAN_HEADERS compile definition can be controlled by the build
system and if enabled it will be set to QT_LEAN_HEADERS=2.
- qmake it can be controlled using the CONFIG*=lean_headers
- CMake it can be controlled using the LEAN_HEADERS CMake option
This feature is disabled by default and the default value can be set
using the TINYORM_QT_LEAN_HEADERS environment variable.
With CMake, the TINYORM_QT_LEAN_HEADERS environment variable is only
considered during the initial configuration.
I finally found a solution for these recursive #include-s.
I removed all #include-s in all models and defined forward declarations
instead of them. This way I ensured that no #include is defined twice.
Consequently, all needed #include-s must be defined in the final
executable or library where these models are used.
Because of this, I have created so-called Includes Lists. They contain
all #include-s that are needed to properly #include all the models in
terms of their relationships. This means these Includes Lists can be
used instead of #include-ing all models one by one in the final
executable or library.
Other changes
- added missing forward declarations
- removed useless u_ data members in some models
- renamed many models to more general names like Xyz_NoRelations
- added a new models with no relationships if the given test case
doesn't need these relationships (greatly speeds up compilation and
decreases memory usage during compilation;
eg. ~50% for the tst_Model_Return_Relation test case))
In this commit, it was practically impossible to preserve the git commit
history for some models, so I'm going to lose it, I tried to preserve
it, but it's not worth the effort.
Commented all linker security features on MSYS2 and MinGW-w64 as they
are all enabled by default.
- added detailed comments
- added todo task
[skip ci]
Also bumped to:
- TinyDrivers v0.2.0
- TinyMySql v0.2.0
- TinyUtils v0.5.0
- removed Qt v5 support (since TinyORM v0.38.0) 🎉🕺🙌eda9df9f
- renamed all occurrences of QVector to QList 8a71078f
- renamed all occurrences of toVector to toList (Model) 118acd88
- renamed all getQtQuery and similar to getSqlQuery 7f897b33
- drivers populate Default Column Values
- added MySQL v9.0 support
- increased min. GCC version to v11.2
- upgraded everything to latest versions 😁
- qmake/cmake added support for ccache >=4.10 (on Windows with PCH) 🙌👌
- Qt removed deprecated API-s up to Qt v6.9
- bugfix in String::snake() 🤔
- vcpkg bugfix /MT vs /MD
- docs added API Stability boxes and a new page
- fixed all Visual Studio 2022 analyzer warnings (Recommended Rules Profile)
- greatly optimized PCH
- cmake added support for ctest --parallel 🎉
- workflows added LTO to matrix (Linux/Windows)
- tools added deploy scripts 👌
- ~500 more improvements and bugfix-es 😮😎
The databasemanager test case that will provide PCH for all other test
cases, what means all other test cases will use this PCH without
compilation.
- added a new PROVIDES_PCH for tiny_configure_test()
- this new implementation will be enabled from Qt v6.8.0 because of
https://bugreports.qt.io/projects/QTBUG/issues/QTBUG-126729