On Thursday, 24 November 2022 at 06:19:24 UTC, WebFreak001 wrote:
Hello!
at our hackerspace we have been working tirelessly for the past
half year to bring a great new ORM experience to D and Rust.
The D side of this ORM can be found at:
https://code.dlang.org/packages/dorm
It provides a nice D API to directly save data to any database,
restore data, list data, etc.
Current features:
- Declarative table/model definitions from D, with rich UDA
annotations
- Command Line Interface to create migrations automatically
from the D application, good for checking into the source
repository and to distribute with the app
- Migrations allow both users and developers to update the
database in their deployed app instances when needed, coming
from any (or no) previous version
- High-level APIs both in D and Rust
- Support for MySQL, PostgreSQL and sqlite3 (MySQL and
PostgreSQL drivers written in safe Rust)
- Automatic mapping between defined D datatypes and SQL
- Support for slim SQL queries by only using and selecting
columns that are needed
- CRUD interface with support for dereferencing foreign keys,
embedded structs, advanced SQL conditions that can represent
almost any SQL condition using D code that looks similar to
regular if statements
- Support for transactions
- Raw SQL API
- Streaming SQL responses (range interface)
- Async support with vibe.d - also works standalone with and
without multithreading from the application
- Multithreaded connection pool
Documentation can be found here: https://rorm.rs/ (although
very WIP still!)
Minimal sample project:
https://github.com/rorm-orm/dorm/tree/ee221e6c66bf460b77592c208d1620a93a007a66/testapp
Bunch of integration tests, that show all the functionality:
https://github.com/rorm-orm/dorm/tree/ee221e6c66bf460b77592c208d1620a93a007a66/integration-tests
Feel free to try it out and open issues! The API will probably
still change a bunch in the future. However the current
modelling capabilities should already suffice for a wide
selection of apps you might want to test this in.
Looking forward to your feedback.
This looks very promising. The embedded feature looks great.