[ANN] PostgresORM.jl: Object Relational Mapping for PostgreSQL

I’m happy to announce PostgresORM.jl, a Julia ORM for PostgreSQL.

This package was developed to help us create Julia based web applications.
Before this public release, it has been used in production for over a year in various projects and in particular in two large web applications of our clients that are critical to them.
This to say that it covers quite a lot of use cases but not any possible use case for now.

It features the following:

CRUD functions

  • ‘Create’ functions: create_entity!, create_in_bulk_using_copy
  • ‘Retrieve’ functions: retrieve_entity, retrieve_one_entity, execute_plain_query, execute_query_and_handle_result
  • ‘Update’ functions: update_entity!, update_vector_property!
  • ‘Delete’ functions: delete_entity, delete_entity_alike

Reverse engineering
There is a reverse enginnering function generate_julia_code that creates the Julia structs, mappings and enums from the PostgreSQL database

Tracking of modifications
This can be activated on a per-class basis. It will serialize the changes of the instances in the designated ‘modifications’ table.

Handling of non trivial use-cases

  • Composed primary keys
  • Mutable composite types can be used as ID property