fnc12/sqlite_orm
❤️ SQLite ORM light header only library for modern C++
14 Releases
Latest: 1y ago
v1.9.1Latest
📋 Changes
- ⭐ Common Table Expressions for CRUD operations.
- ⭐ Added C++ operator equivalents for bitwise operator expressions.
- ⭐ Added the possibility of using unary minus expressions.
- ⚙️ Improved serializing logical and bitwise "not" expressions - less parentheses.
- ⚙️ Placed constexpr strings used for serialization into the read-only segment, which makes resulting executable binaries smaller.
- https://github.com/fnc12/sqlite_orm/issues/1353 (thanks to @uuiid)
- https://github.com/fnc12/sqlite_orm/issues/1354
- Corrected serializing result set deduplicators DISTINCT and ALL.
- + 4 more
v1.9
📋 Changes
- `match<T>(expression)` function which represents `MATCH` SQLite operator. Can be used like any other function within FTS5 queries
- `rank()` function which represents `RANK` keyword. One can write `order_by(rank())` to get `ORDER BY rank` or plain `rank()` without `order_by` to get `RANK` keyword in your query
- `is_equal` overload for table comparison: `is_equal<User>("Tom Gregory")` serializes to `"users" = 'Tom Gregory'`
- `highlight<T>(a, b, c)` function which represents `HIGHLIGHT(table, a, b, c)` SQL function
- `unindexed()` for `UNINDEXED` column constraint
- `prefix(auto)` for `prefix=x` column constraint
- `tokenize(auto)` for `tokenize = x`. E.g. ` tokenize("porter ascii")` produces `tokenize = 'porter ascii'`
- `content(auto)` for `content=x`. E.g. `content("")` produces `content=''`
- + 21 more
v1.8.2
📋 Changes
- ⚙️ Removed dependency on RTTI
- ⚙️ Compilation time improvement https://github.com/fnc12/sqlite_orm/pull/1161
- ⚙️ Corrected library dependencies on Catch2 and sqlite3 in CMake, which improves the process of finding or building them
- ⚙️ Fixed a bunch of warnings (unqualified call to `std::move()` and `std::forward()`, unused parameters)
- ⚙️ Fixed sync'ing the eponymous virtual table `dbstat`
- ⚙️ Fixed a bunch of errors in C++20 mode in environments that lack C++20 library features
- ⚙️ Fixed serialization of `EXISTS` clause, which must be always enclosed in parentheses
- https://github.com/fnc12/sqlite_orm/issues/1139
- + 3 more
v1.8.1
📋 Changes
- pinned appveyor test environment to vcpkg 2023.01.09
- made type_is_nullable<> a specializable struct again
- examples are now fully linkable again: chrono_binding.cpp, nullable_enum_binding.cpp, pointer_passing_interface.cpp (those examples - wrongly commented out the main() function)
- updated unit test framework to Catch2 v3 (https://github.com/fnc12/sqlite_orm/issues/1114)
- updated clang-format lint action on github
- removed dangling submodule reference (https://github.com/fnc12/sqlite_orm/issues/1107)
- made all examples compilable with Visual C++ 2015 Update 3
v1.8
📋 Changes
- `primary_key().asc().autoincrement()` makes `PRIMARY KEY ASC AUTOINCREMENT`
- `primary_key().on_conflict_rollback()` makes `PRIMARY KEY ON CONFLICT ROLLBACK`
- `primary_key().desc().on_conflict_abort()` makes `PRIMARY KEY DESC ON CONFLICT ABORT`
- ⭐ `asterisk` now supports table aliases as well
- ⭐ `storage.dump` now can accept prepared expressions to serialize them (thanks to @trueqbit)
- ⭐ added new example file `chrono_binding.cpp`
- ⭐ added scalar versions of `MAX` and `MIN` functions (yes we missed them; thanks to @trueqbit)
- ⭐ added `NULLIF` and `IFNULL` core functions support (thanks to @trueqbit)
- + 33 more
v1.7.1
📋 Changes
- Fixed compilation error `is_upsert_clause - is not a member of sqlite_orm::internal`
v1.7
📋 Changes
- `UNICODE`
- `TYPEOF`
- `TOTAL_CHANGES`
- `LAST_INSERT_ROWID`
- `IFNULL`
- ⭐ added static `IN` feature (fixed bugs https://github.com/fnc12/sqlite_orm/issues/675 and https://github.com/fnc12/sqlite_orm/issues/512)
- ⭐ added `storage.column_name` API
- ⚙️ added `noexcept` getters and setter modifiers. Available with C++17 and higher
- + 23 more
v1.61.6
📋 Changes
- `HEX`
- `QUOTE`
- `RANDOMBLOB`
- `INSTR`
- `REPLACE`
- `ROUND`
- `SOUNDEX`
- `TIME`
- + 10 more
v1.51.5
📋 Changes
- WHERE
- GROUP BY
- ORDER BY
- LIMIT
- 🐞 fixed compilation errors with older versions of sqlite3
- 🐞 #384
- 🐞 #369
- 🐞 #400
v1.4
📋 Changes
- ⚙️ Added Catch2 unit tests framework into unit tests project
- ⚙️ Added unit tests configurations for even more platforms and compilers (thanks to @Farwaykorse)
- ⚙️ Added contributing doc
- 🚀 Added `nullptr` binding to WHERE conditions
- 🚀 Reduced binary size
- 🚀 Added composite key support for `storage_t::remove` function
- 🚀 Reduces memory consumption
- Fixed GCC6 compilation bug
- + 7 more
v1.3
📋 Changes
- ⭐ Column aliases</summary>
- ⭐ `SELECT * FROM table` with syntax `storage.select(asterisk<T>())` returns `std::tuple` of mapped members' types
- ⭐ `CAST(expression AS type)` expression with `cast<T>(expression)` syntax
- ⭐ added `julianday` function
- 🚀 `FOREIGN KEY` now works with composite `PRIMARY KEY`
- 🚀 improved performance - replaced `std::shared_ptr` with `std::unique_ptr` inside storage, view iterator and aggregate functions
- ⚙️ added Windows CI with Appveyor (thanks to @soroshsabz)
- 🐞 Bug fixes - fixed runtime error which can be faced during `storage::iterate()` call
- + 1 more
v1.2 Unionv1.2
📋 Changes
- UNION
- Custom collations
- Setters/getters
- Easier development
- Explicit types
- Limits
- Explicit INSERT
- Static unit tests
- + 1 more
v1.1
📋 Changes
- VACUUM
- Arithmetic operators
- Bug fixes
- Warning fixes
The very firstv1.0
📋 Changes
- No raw string queries:
- Intuitive syntax
- Comfortable interface - one code line per single query
- Built with modern C++14 features (no macros and external scripts)
- CRUD support
- Pure select query support
- STL compatible
- Custom types binding support
- + 13 more
