6 releases
0.44.0 | Apr 2, 2020 |
---|---|
0.43.2 | Mar 22, 2020 |
0.42.1 | Mar 20, 2020 |
#2938 in Database interfaces
60KB
1.5K
SLoC
"A pleasure to meet you. I am C-3p0, JSON-DB Relations."
C3p0: "Hello, I don't believe we have been introduced. A pleasure to meet you. I am C-3p0, JSON-DB Relations."
Are you playing with Postgres and you like it?
Do you think JSON is excellent, but it could be better handled in your DB code?
whether you prefer rust-postgres or Diesel, C3p0 brings you a set of tools to simplify JSON integration in your database workflow.
So, if you would like to:
- use any
serde_json::Serializable
struct as a valid field in your Diesel models - seamlessly integrate any
serde_json::Serializable
struct in your rust-postgres code - automatically upgrade your schema in rust-postgres as in Diesel migration
then keep reading!
What C3p0 is not
Even when it offers a high-level interface to perform basic CRUD operations, it is not an ORM nor an alternative to Diesel or similar products.
C3p0: "I see, Sir Luke".
Great!
How it works
C3p0 is composed of a set of independent small Rust libraries for:
- simplifying JSON-Postgres interactions
- facilitating general schema management
C3p0 components:
C3p0 components not ready yet:
- c3p0_diesel This will be the equivalent c3p0_pg build on Diesel.
Prerequisites
You must have Rust version 1.33 or later installed.
History
The first C3p0 version was written in Java...
C3p0: "If I told you half the things I’ve heard about this Jabba the Hutt, you’d probably short circuit."
I said "Java", "Ja"-"va". Stay focused, please!
Anyway, Java is slowly showing its age, and we got a bit bored about it.
C3p0: "they're using a very primitive dialect".
Indeed.
On the contrary, our interest in the Rust programming language has kept growing over time; so, experimented with it and, finally, migrated some critical portions of our code to Rust.
Just said, we love it.
We believe that Rust is a better overall language.
C3p0: "The city's central computer told you?"
Yes! It allows us to achieve better resource usage, to avoid the garbage collector and the virtual machine, and, at the same time, to get a better and safer concurrency level.
Can I use it in production?
Han "Don't worry. Everything's gonna be fine. Trust me."
C3p0: "Every time he employs that phrase, my circuitry becomes erratic!"
Dependencies
~10–18MB
~256K SLoC