diesel-chrono-duration

MIT licensed

This crate adds support for the chrono::Duration type into the diesel ORM.

Why

Diesel crate has a policy of including only such type implementations which can be represented as is in the SQL types. chrono::Duration does not have a direct 1-to-1 mapping in both the SQLite and PostgreSQL.

How

The chrono::Duration type stores its value as i64 number. This is exactly 8 bytes and such types are BigInteger and BigInt. So, the ToSql and FromSql traits implementation simply uses chrono::Duration's inner i64 value.

Usage

To implement this we added ChronoDurationProxy type which is just a strong type as defined as:

rust pub struct ChronoDurationProxy(pub chrono::Duration);

In your table model you use it instead of chrono::Duration:

```rust extern crate dieselchronoduration;

use dieselchronoduration::ChronoDurationProxy;

[derive(Debug, Clone, Queryable, Insertable)]

[table_name = "sometable"]

pub struct SomeTable { /// The ID of the record in the table. pub id: i32, /// Some duration pub duration: ChronoDurationProxy, } ```

Later, when you want to use it's value as chrono::Duration you have these options:

Contribute

The project is very simple and small but all contributions are "please make a contribution". Thanks in advance.

License

This project is licensed under the MIT license.