6 days ago

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.

6 days ago

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.