-
Notifications
You must be signed in to change notification settings - Fork 28
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
64 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
--- | ||
sidebar_position: 6 | ||
sidebar_label: π Features Summary | ||
hide_table_of_contents: true | ||
description: List that fastly summarizes all TinyORM features. | ||
keywords: [c++ orm, tinyorm, features, summary, features summary] | ||
--- | ||
|
||
# Features Summary | ||
|
||
The following list fastly summarizes all `TinyORM` features. | ||
|
||
- simple database connections management 𧬠| ||
- database manager that helps with the database connections management | ||
- `Orm::DB` facade class for nicer and shorter syntax | ||
- MySQL, SQLite, and PostgreSQL support for all features | ||
- multi-threading support π | ||
- overhauled query builder π§ | ||
- allows passing sub-queries and raw expressions practically everywhere, to column names, values, and to every SQL clause as select, where, joins, group by, having, order by π₯ | ||
- a logical grouping that offers to wrap logical groups in parenthesis | ||
- chunked results for lower memory footprint β¨ | ||
- raw methods for all SQL clauses | ||
- all join types (left, right, cross, inner) and also join where clause support π«€ | ||
- aggregate methods min, max, sum, increment, decrement, ... | ||
- whereExists and exists methods for an existence queries | ||
- transactions and pessimistic locking π | ||
- of course, insert, update, and delete SQL clauses support | ||
- clever ORM with all relation types support π | ||
- one-to-one, one-to-many, and many-to-many relation types (also inverse relationships) | ||
- eager and lazy loading with custom select and constraints π | ||
- all query builder methods are proxied to the model instances and also to the relation instances π€― (everything that can be called on the query builder can also be called on the model and relation instances) | ||
- clean active record pattern | ||
- advanced features like timestamps, touching parent timestamps, default models, and default model attributes | ||
- querying relationships existence/absence using the has, whereHas, and hasNested methods (using dot notation for selecting nested relationships _users.posts.comments_) | ||
- compiled database migrations and seeders πΊ | ||
- create, update, drop, and rename database tables | ||
- create, drop, and rename table columns | ||
- extensive schema builder that allows creating of all possible columns types | ||
- terser syntax for creating foreign keys and foreign key constraints | ||
- supports creating, and dropping column indexes (primary, unique, fulltext, spatial) | ||
- the `tom` console application with tab completion for all shells (pwsh, bash, zsh) π₯³ | ||
- the scaffolding of models, migrations, and seeders | ||
- overhauled models scaffolding, every feature that is supported by models can be generated using the `tom make:model` cli command | ||
- a huge amount of code is unit tested, currently __1270 unit tests__ π€― | ||
- C++20 only, with all the latest features used like concepts/constraints, ranges, smart pointers (no `new` keyword in the whole code π), folding expressions | ||
- qmake and CMake build systems support | ||
- vcpkg support (also the vcpkg port, currently not committed to the vcpkg repository βΉοΈ) | ||
- it's really fast, you can run 1000 complex queries in 500ms (heavily DB dependant, the PostgreSQL is by far the fastest) β | ||
- extensive documentation π | ||
- ... | ||
|
||
### Showcase Images | ||
|
||
###### Tom console application | ||
 | ||
|
||
###### Passed all unit tests π₯³ | ||
 | ||
|
||
###### TinyOrmPlayground single-threaded | ||
 | ||
|
||
###### TinyOrmPlayground multi-threaded | ||
 |