Skip to main content

ValueObject

Derive Macro ValueObject 

Source
#[derive(ValueObject)]
{
    // Attributes available to this derive:
    #[value_object]
}
Expand description

Derive macro for generating PostgreSQL enum boilerplate.

§Overview

The ValueObject derive macro generates all boilerplate code needed for a PostgreSQL enum type: Display, FromStr, AsRef<str>, and TryFrom<&str> implementations, plus sqlx and serde attributes.

§Generated Code

For an enum named OrderStatus with pg_type = "order_status", the macro generates:

  • Debug, Clone, PartialEq, Eq, PartialOrd derives
  • sqlx(type_name = "order_status", rename_all = "lowercase") attribute
  • serde(rename_all = "lowercase") attribute
  • impl Display — lowercase variant names
  • impl FromStr — case-insensitive parsing
  • impl AsRef<str> — lowercase string representation
  • impl TryFrom<&str> — delegates to FromStr

§Attributes

AttributeRequiredDescription
pg_typeYesPostgreSQL enum type name (e.g., "order_status")

§Example

use entity_derive::ValueObject;

#[derive(ValueObject)]
#[value_object(pg_type = "order_status")]
pub enum OrderStatus {
    Pending,
    Confirmed,
    Cancelled,
}

// Generated:
// impl Display for OrderStatus
// impl FromStr for OrderStatus (case-insensitive)
// impl AsRef<str> for OrderStatus
// impl TryFrom<&str> for OrderStatus