Crate butane

source ·

Modules

  • For supporting additional types with the Pg backend (or other future backends).
  • For working with migrations. If using the butane CLI tool, it is not necessary to use these types directly.
  • Prelude module to improve ergonomics.
  • Types to support database queries. Most users will use the query!, filter!, and find! macros instead of using this module directly.

Macros

  • Type-safe way to refer to a column name. Use as colname!(MODEL_TYPE, FIELD_NAME). E.g. For a model type Foo with a field bar, colname!(Foo, bar) would return “bar”, but colname!(Foo, bat)would be a compiler error (assumingFoo` does not have such a field.
  • Macro to construct a BoolExpr (for use with a Query) from an expression with Rust syntax.
  • Finds a specific database object.
  • Constructs a filtered database query.

Structs

  • Used to implement a relationship between models.
  • Used to implement a many-to-many relationship between models.
  • Used internally by butane to track state about the object.

Enums

Traits

  • Trait for referencing the primary key for a given model. Used to implement ForeignKey equality tests.
  • An object in the database.
  • A type which may be the result of a database query.
  • Type suitable for being a database column.
  • Used to convert a SqlVal or SqlValRef into another type.
  • Used to convert another type to a SqlVal or SqlValRef.

Type Definitions

Attribute Macros

  • Attribute macro which marks a type as being available to butane for use in models.
  • Attribute macro which generates an implementation of DataResult. Continuing with our blog post example from model, we could create a DataResult with only some of the fields from Post (to avoid fetching all of them in a query).
  • Attribute macro which marks a struct as being a data model and generates an implementation of DataObject. This macro will also write information to disk at compile time necessary to generate migrations

Derive Macros