https://gitlab.com/monazita/monazita/
with documentation at
https://monazita.gitlab.io/monazita/
It was developed for a web application [1] requiring the use of specific SQL queries (using the table_func[2] plugin for crosstab queries) which prevented the use of more traditional ORM-style libraries.
As I was also using the development of that application to dive into functional programming, I decided to try a fully functional approach[4].
It proved itself a very useful approach, to the point I thought it was worth to share it as a Nuget library [6].
I particularly like the fact that I can
* write normal sql with parameter substitutions using printf placeholders. If you don't want to write SQL, this library is clearly not for you :-)
* define the queries and data manipulations without worrying about the connection to the database. This allowed me to define all queries and data manipulations in a library [5] where I'm not concerned about handling connection issues, which is done in the app code using that library.
The library is released under the LGPL license, and is published as an alpha stage project because it still needs some cleanup after its extraction from the web app it originated from. But I'm following the "release early, release often" approach here, also to gauge interest.
This library only supports postgresql for the moment, but in the mid-term I'd like to support other databases, starting with sqlite.
0: https://monazita.gitlab.io/monazita/
2: https://www.postgresql.org/docs/current/tablefunc.html
3: https://fsharpforfunandprofit.com/rop/
4: https://fsharpforfunandprofit.com/posts/elevated-world-6/#re...
5: https://gitlab.com/myowndb/myowndb/-/tree/master/lib This library defines all data retrieval, insertions, updates, transformations, etc without ever handling a database connection.