backbone-mail 0.2.32

Odoo mail core port — message/notification/followers/activity/alias/sms queue (schema: messaging)
//! Actors value object
//!
//! Generated by metaphor-schema. Do not edit manually.
//!
//! This is a DDD Value Object - immutable, no identity, equality by attributes.

use serde::{Deserialize, Serialize};
use uuid::Uuid;
#[cfg(feature = "openapi")]
use utoipa::ToSchema;

#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[cfg_attr(feature = "openapi", derive(ToSchema))]
pub struct Actors {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub created_by: Option<Uuid>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub updated_by: Option<Uuid>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub deleted_by: Option<Uuid>,
}

impl Default for Actors {
    fn default() -> Self {
        Self {
            created_by: None,
            updated_by: None,
            deleted_by: None,
        }
    }
}

impl Actors {
    /// Create a new Actors value object
    pub fn new(created_by: Option<Uuid>, updated_by: Option<Uuid>, deleted_by: Option<Uuid>) -> Self {
        Self {
            created_by,
            updated_by,
            deleted_by,
        }
    }

    /// Create a builder for Actors
    pub fn builder() -> ActorsBuilder {
        <ActorsBuilder as Default>::default()
    }

}

/// Builder for Actors value object
#[derive(Debug, Clone, Default)]
pub struct ActorsBuilder {
    created_by: Option<Uuid>,
    updated_by: Option<Uuid>,
    deleted_by: Option<Uuid>,
}

impl ActorsBuilder {
    /// Set the created_by field
    pub fn created_by(mut self, value: Uuid) -> Self {
        self.created_by = Some(value);
        self
    }

    /// Set the updated_by field
    pub fn updated_by(mut self, value: Uuid) -> Self {
        self.updated_by = Some(value);
        self
    }

    /// Set the deleted_by field
    pub fn deleted_by(mut self, value: Uuid) -> Self {
        self.deleted_by = Some(value);
        self
    }

    /// Build the Actors value object
    pub fn build(self) -> Result<Actors, String> {

        let value = Actors {
            created_by: self.created_by,
            updated_by: self.updated_by,
            deleted_by: self.deleted_by,
        };

        Ok(value)
    }

}