Crate dbent

source ·
Expand description

dbent - database entity types

Provides types for defining simple database entities and relationships in structs for when you don’t want to use an ORM but still want to organize your code in an object-oriented manner.

Usage

This crate is on crates.io and can be used by adding dbent to your dependencies in your project’s Cargo.toml.

[dependencies]
dbent = "0.1.0"

Features

The following features are supported:

  • default: enables serde and derive features by default
  • serde: for serde serialization
  • rusqlite: for rusqlite ToSql and FromSql implementations for the Key type
  • derive: for the derive macros Entity and Label

Example

This was used for the world-tables app in the world-tables-base.

License

Licensed under either of Apache License, Version 2.0 or MIT License at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in dbent by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Modules

  • Convenience re-export of common members

Structs

  • A newtype for defining a Key on entities
  • Struct that holds both key and label for convenience

Enums

  • Enum for defining a simple entity that will hold a Key or the created/fetched data
  • Enum for situations when you want to define not just a Key but also a Label
  • The error type for all errors in this crate
  • Enum for defining one-to-many or many-to-many relationships

Traits

  • Trait for entities to define which struct field holds their primary key
  • Trait for entities that optionally have a label defined
  • Convenience trait for returning both key and label as a Tag

Type Definitions

  • An Entity that has an Int as key
  • An EntityLabel that has an Int as key
  • An EntityLabel that has a String as key
  • An Entity that has a String as key
  • An Int typedef for convenience to be used as Key number
  • The result typedef for this crate for convenience