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 {
pub fn new(created_by: Option<Uuid>, updated_by: Option<Uuid>, deleted_by: Option<Uuid>) -> Self {
Self {
created_by,
updated_by,
deleted_by,
}
}
pub fn builder() -> ActorsBuilder {
<ActorsBuilder as Default>::default()
}
}
#[derive(Debug, Clone, Default)]
pub struct ActorsBuilder {
created_by: Option<Uuid>,
updated_by: Option<Uuid>,
deleted_by: Option<Uuid>,
}
impl ActorsBuilder {
pub fn created_by(mut self, value: Uuid) -> Self {
self.created_by = Some(value);
self
}
pub fn updated_by(mut self, value: Uuid) -> Self {
self.updated_by = Some(value);
self
}
pub fn deleted_by(mut self, value: Uuid) -> Self {
self.deleted_by = Some(value);
self
}
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)
}
}