backbone-maintenance 0.7.21

Minimal Backbone Framework module skeleton
Documentation
//! Public types for Maintenance module
//!
//! Generated by metaphor-schema. Do not edit manually.
//!
//! These DTOs are the ONLY types other modules should use.
//! They are decoupled from internal domain entities.

use serde::{Deserialize, Serialize};
use uuid::Uuid;
use chrono::{DateTime, Utc, NaiveDate};
use rust_decimal::Decimal;
use crate::domain::entity::*;

// ============================================================================
// MAINTENANCEREQUEST TYPES
// ============================================================================

/// Type-safe ID for MaintenanceRequest
///
/// Use this instead of raw Uuid for type safety across modules.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct MaintenanceRequestId(pub Uuid);

impl MaintenanceRequestId {
    pub fn new(id: Uuid) -> Self {
        Self(id)
    }

    pub fn into_inner(self) -> Uuid {
        self.0
    }
}

impl From<Uuid> for MaintenanceRequestId {
    fn from(id: Uuid) -> Self {
        Self(id)
    }
}

impl From<MaintenanceRequestId> for Uuid {
    fn from(id: MaintenanceRequestId) -> Self {
        id.0
    }
}

/// Data transfer object for MaintenanceRequest
///
/// This is the public representation of MaintenanceRequest for other modules.
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceRequestDto {
    pub id: MaintenanceRequestId,
    pub name: String,
    pub description: Option<String>,
    pub request_date: NaiveDate,
    pub schedule_date: Option<DateTime<Utc>>,
    pub schedule_end: Option<DateTime<Utc>>,
    pub close_date: Option<NaiveDate>,
    pub duration: Decimal,
    pub owner_user_id: Option<Uuid>,
    pub user_id: Option<Uuid>,
    pub asset_id: Option<Uuid>,
    pub stage_id: Uuid,
    pub kanban_state: RequestKanbanState,
    pub priority: RequestPriority,
    pub maintenance_type: MaintenanceType,
    pub recurring: bool,
    pub repeat_interval: i32,
    pub repeat_unit: RepeatUnit,
    pub repeat_type: RepeatType,
    pub repeat_until: Option<NaiveDate>,
    pub successor_request_id: Option<Uuid>,
    pub successor_of_request_id: Option<Uuid>,
    pub metadata: serde_json::Value,
}

/// Summary view of MaintenanceRequest for list displays
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceRequestSummary {
    pub id: MaintenanceRequestId,
    pub name: String,
}

/// Reference to MaintenanceRequest for foreign key relationships
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceRequestRef {
    pub id: MaintenanceRequestId,
}

// ============================================================================
// MAINTENANCESCHEDULE TYPES
// ============================================================================

/// Type-safe ID for MaintenanceSchedule
///
/// Use this instead of raw Uuid for type safety across modules.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct MaintenanceScheduleId(pub Uuid);

impl MaintenanceScheduleId {
    pub fn new(id: Uuid) -> Self {
        Self(id)
    }

    pub fn into_inner(self) -> Uuid {
        self.0
    }
}

impl From<Uuid> for MaintenanceScheduleId {
    fn from(id: Uuid) -> Self {
        Self(id)
    }
}

impl From<MaintenanceScheduleId> for Uuid {
    fn from(id: MaintenanceScheduleId) -> Self {
        id.0
    }
}

/// Data transfer object for MaintenanceSchedule
///
/// This is the public representation of MaintenanceSchedule for other modules.
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceScheduleDto {
    pub id: MaintenanceScheduleId,
    pub asset_id: Uuid,
    pub name: String,
    pub interval_days: i32,
    pub next_due_date: NaiveDate,
    pub status: MaintenanceScheduleStatus,
    pub metadata: serde_json::Value,
}

/// Summary view of MaintenanceSchedule for list displays
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceScheduleSummary {
    pub id: MaintenanceScheduleId,
    pub name: String,
    pub status: MaintenanceScheduleStatus,
}

/// Reference to MaintenanceSchedule for foreign key relationships
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceScheduleRef {
    pub id: MaintenanceScheduleId,
}

// ============================================================================
// MAINTENANCESTAGE TYPES
// ============================================================================

/// Type-safe ID for MaintenanceStage
///
/// Use this instead of raw Uuid for type safety across modules.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct MaintenanceStageId(pub Uuid);

impl MaintenanceStageId {
    pub fn new(id: Uuid) -> Self {
        Self(id)
    }

    pub fn into_inner(self) -> Uuid {
        self.0
    }
}

impl From<Uuid> for MaintenanceStageId {
    fn from(id: Uuid) -> Self {
        Self(id)
    }
}

impl From<MaintenanceStageId> for Uuid {
    fn from(id: MaintenanceStageId) -> Self {
        id.0
    }
}

/// Data transfer object for MaintenanceStage
///
/// This is the public representation of MaintenanceStage for other modules.
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceStageDto {
    pub id: MaintenanceStageId,
    pub name: String,
    pub sequence: i32,
    pub fold: bool,
    pub done: bool,
    pub metadata: serde_json::Value,
}

/// Summary view of MaintenanceStage for list displays
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceStageSummary {
    pub id: MaintenanceStageId,
    pub name: String,
}

/// Reference to MaintenanceStage for foreign key relationships
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceStageRef {
    pub id: MaintenanceStageId,
}

// ============================================================================
// MAINTENANCEVISIT TYPES
// ============================================================================

/// Type-safe ID for MaintenanceVisit
///
/// Use this instead of raw Uuid for type safety across modules.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct MaintenanceVisitId(pub Uuid);

impl MaintenanceVisitId {
    pub fn new(id: Uuid) -> Self {
        Self(id)
    }

    pub fn into_inner(self) -> Uuid {
        self.0
    }
}

impl From<Uuid> for MaintenanceVisitId {
    fn from(id: Uuid) -> Self {
        Self(id)
    }
}

impl From<MaintenanceVisitId> for Uuid {
    fn from(id: MaintenanceVisitId) -> Self {
        id.0
    }
}

/// Data transfer object for MaintenanceVisit
///
/// This is the public representation of MaintenanceVisit for other modules.
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceVisitDto {
    pub id: MaintenanceVisitId,
    pub asset_id: Uuid,
    pub schedule_id: Option<Uuid>,
    pub maintenance_type: MaintenanceType,
    pub status: VisitStatus,
    pub warehouse_id: Option<Uuid>,
    pub warranty_claim_id: Option<Uuid>,
    pub scheduled_date: NaiveDate,
    pub performed_date: Option<NaiveDate>,
    pub labor_cost: Decimal,
    pub parts_cost: Decimal,
    pub total_cost: Decimal,
    pub maintenance_expense_account_id: Option<Uuid>,
    pub parts_inventory_account_id: Option<Uuid>,
    pub labor_payable_account_id: Option<Uuid>,
    pub journal_id: Option<Uuid>,
    pub accounting_post_id: Option<Uuid>,
    pub notes: Option<String>,
    pub metadata: serde_json::Value,
}

/// Summary view of MaintenanceVisit for list displays
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceVisitSummary {
    pub id: MaintenanceVisitId,
    pub status: VisitStatus,
}

/// Reference to MaintenanceVisit for foreign key relationships
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceVisitRef {
    pub id: MaintenanceVisitId,
}

// ============================================================================
// MAINTENANCEVISITPART TYPES
// ============================================================================

/// Type-safe ID for MaintenanceVisitPart
///
/// Use this instead of raw Uuid for type safety across modules.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct MaintenanceVisitPartId(pub Uuid);

impl MaintenanceVisitPartId {
    pub fn new(id: Uuid) -> Self {
        Self(id)
    }

    pub fn into_inner(self) -> Uuid {
        self.0
    }
}

impl From<Uuid> for MaintenanceVisitPartId {
    fn from(id: Uuid) -> Self {
        Self(id)
    }
}

impl From<MaintenanceVisitPartId> for Uuid {
    fn from(id: MaintenanceVisitPartId) -> Self {
        id.0
    }
}

/// Data transfer object for MaintenanceVisitPart
///
/// This is the public representation of MaintenanceVisitPart for other modules.
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceVisitPartDto {
    pub id: MaintenanceVisitPartId,
    pub visit_id: Uuid,
    pub item_id: Uuid,
    pub quantity: Decimal,
    pub unit_cost: Decimal,
    pub amount: Decimal,
    pub metadata: serde_json::Value,
}

/// Summary view of MaintenanceVisitPart for list displays
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceVisitPartSummary {
    pub id: MaintenanceVisitPartId,
}

/// Reference to MaintenanceVisitPart for foreign key relationships
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceVisitPartRef {
    pub id: MaintenanceVisitPartId,
}

// ============================================================================
// CUSTOM TYPES
// ============================================================================

// <<< CUSTOM TYPES START >>>
// Add custom public types here
// <<< CUSTOM TYPES END >>>