Skip to main content

backbone_maintenance/exports/
types.rs

1//! Public types for Maintenance module
2//!
3//! Generated by metaphor-schema. Do not edit manually.
4//!
5//! These DTOs are the ONLY types other modules should use.
6//! They are decoupled from internal domain entities.
7
8use serde::{Deserialize, Serialize};
9use uuid::Uuid;
10use chrono::{DateTime, Utc, NaiveDate};
11use rust_decimal::Decimal;
12use crate::domain::entity::*;
13
14// ============================================================================
15// MAINTENANCEREQUEST TYPES
16// ============================================================================
17
18/// Type-safe ID for MaintenanceRequest
19///
20/// Use this instead of raw Uuid for type safety across modules.
21#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
22pub struct MaintenanceRequestId(pub Uuid);
23
24impl MaintenanceRequestId {
25    pub fn new(id: Uuid) -> Self {
26        Self(id)
27    }
28
29    pub fn into_inner(self) -> Uuid {
30        self.0
31    }
32}
33
34impl From<Uuid> for MaintenanceRequestId {
35    fn from(id: Uuid) -> Self {
36        Self(id)
37    }
38}
39
40impl From<MaintenanceRequestId> for Uuid {
41    fn from(id: MaintenanceRequestId) -> Self {
42        id.0
43    }
44}
45
46/// Data transfer object for MaintenanceRequest
47///
48/// This is the public representation of MaintenanceRequest for other modules.
49#[derive(Debug, Clone, Serialize, Deserialize)]
50pub struct MaintenanceRequestDto {
51    pub id: MaintenanceRequestId,
52    pub name: String,
53    pub description: Option<String>,
54    pub request_date: NaiveDate,
55    pub schedule_date: Option<DateTime<Utc>>,
56    pub schedule_end: Option<DateTime<Utc>>,
57    pub close_date: Option<NaiveDate>,
58    pub duration: Decimal,
59    pub owner_user_id: Option<Uuid>,
60    pub user_id: Option<Uuid>,
61    pub asset_id: Option<Uuid>,
62    pub stage_id: Uuid,
63    pub kanban_state: RequestKanbanState,
64    pub priority: RequestPriority,
65    pub maintenance_type: MaintenanceType,
66    pub recurring: bool,
67    pub repeat_interval: i32,
68    pub repeat_unit: RepeatUnit,
69    pub repeat_type: RepeatType,
70    pub repeat_until: Option<NaiveDate>,
71    pub successor_request_id: Option<Uuid>,
72    pub successor_of_request_id: Option<Uuid>,
73    pub metadata: serde_json::Value,
74}
75
76/// Summary view of MaintenanceRequest for list displays
77#[derive(Debug, Clone, Serialize, Deserialize)]
78pub struct MaintenanceRequestSummary {
79    pub id: MaintenanceRequestId,
80    pub name: String,
81}
82
83/// Reference to MaintenanceRequest for foreign key relationships
84#[derive(Debug, Clone, Serialize, Deserialize)]
85pub struct MaintenanceRequestRef {
86    pub id: MaintenanceRequestId,
87}
88
89// ============================================================================
90// MAINTENANCESCHEDULE TYPES
91// ============================================================================
92
93/// Type-safe ID for MaintenanceSchedule
94///
95/// Use this instead of raw Uuid for type safety across modules.
96#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
97pub struct MaintenanceScheduleId(pub Uuid);
98
99impl MaintenanceScheduleId {
100    pub fn new(id: Uuid) -> Self {
101        Self(id)
102    }
103
104    pub fn into_inner(self) -> Uuid {
105        self.0
106    }
107}
108
109impl From<Uuid> for MaintenanceScheduleId {
110    fn from(id: Uuid) -> Self {
111        Self(id)
112    }
113}
114
115impl From<MaintenanceScheduleId> for Uuid {
116    fn from(id: MaintenanceScheduleId) -> Self {
117        id.0
118    }
119}
120
121/// Data transfer object for MaintenanceSchedule
122///
123/// This is the public representation of MaintenanceSchedule for other modules.
124#[derive(Debug, Clone, Serialize, Deserialize)]
125pub struct MaintenanceScheduleDto {
126    pub id: MaintenanceScheduleId,
127    pub asset_id: Uuid,
128    pub name: String,
129    pub interval_days: i32,
130    pub next_due_date: NaiveDate,
131    pub status: MaintenanceScheduleStatus,
132    pub metadata: serde_json::Value,
133}
134
135/// Summary view of MaintenanceSchedule for list displays
136#[derive(Debug, Clone, Serialize, Deserialize)]
137pub struct MaintenanceScheduleSummary {
138    pub id: MaintenanceScheduleId,
139    pub name: String,
140    pub status: MaintenanceScheduleStatus,
141}
142
143/// Reference to MaintenanceSchedule for foreign key relationships
144#[derive(Debug, Clone, Serialize, Deserialize)]
145pub struct MaintenanceScheduleRef {
146    pub id: MaintenanceScheduleId,
147}
148
149// ============================================================================
150// MAINTENANCESTAGE TYPES
151// ============================================================================
152
153/// Type-safe ID for MaintenanceStage
154///
155/// Use this instead of raw Uuid for type safety across modules.
156#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
157pub struct MaintenanceStageId(pub Uuid);
158
159impl MaintenanceStageId {
160    pub fn new(id: Uuid) -> Self {
161        Self(id)
162    }
163
164    pub fn into_inner(self) -> Uuid {
165        self.0
166    }
167}
168
169impl From<Uuid> for MaintenanceStageId {
170    fn from(id: Uuid) -> Self {
171        Self(id)
172    }
173}
174
175impl From<MaintenanceStageId> for Uuid {
176    fn from(id: MaintenanceStageId) -> Self {
177        id.0
178    }
179}
180
181/// Data transfer object for MaintenanceStage
182///
183/// This is the public representation of MaintenanceStage for other modules.
184#[derive(Debug, Clone, Serialize, Deserialize)]
185pub struct MaintenanceStageDto {
186    pub id: MaintenanceStageId,
187    pub name: String,
188    pub sequence: i32,
189    pub fold: bool,
190    pub done: bool,
191    pub metadata: serde_json::Value,
192}
193
194/// Summary view of MaintenanceStage for list displays
195#[derive(Debug, Clone, Serialize, Deserialize)]
196pub struct MaintenanceStageSummary {
197    pub id: MaintenanceStageId,
198    pub name: String,
199}
200
201/// Reference to MaintenanceStage for foreign key relationships
202#[derive(Debug, Clone, Serialize, Deserialize)]
203pub struct MaintenanceStageRef {
204    pub id: MaintenanceStageId,
205}
206
207// ============================================================================
208// MAINTENANCEVISIT TYPES
209// ============================================================================
210
211/// Type-safe ID for MaintenanceVisit
212///
213/// Use this instead of raw Uuid for type safety across modules.
214#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
215pub struct MaintenanceVisitId(pub Uuid);
216
217impl MaintenanceVisitId {
218    pub fn new(id: Uuid) -> Self {
219        Self(id)
220    }
221
222    pub fn into_inner(self) -> Uuid {
223        self.0
224    }
225}
226
227impl From<Uuid> for MaintenanceVisitId {
228    fn from(id: Uuid) -> Self {
229        Self(id)
230    }
231}
232
233impl From<MaintenanceVisitId> for Uuid {
234    fn from(id: MaintenanceVisitId) -> Self {
235        id.0
236    }
237}
238
239/// Data transfer object for MaintenanceVisit
240///
241/// This is the public representation of MaintenanceVisit for other modules.
242#[derive(Debug, Clone, Serialize, Deserialize)]
243pub struct MaintenanceVisitDto {
244    pub id: MaintenanceVisitId,
245    pub asset_id: Uuid,
246    pub schedule_id: Option<Uuid>,
247    pub maintenance_type: MaintenanceType,
248    pub status: VisitStatus,
249    pub warehouse_id: Option<Uuid>,
250    pub warranty_claim_id: Option<Uuid>,
251    pub scheduled_date: NaiveDate,
252    pub performed_date: Option<NaiveDate>,
253    pub labor_cost: Decimal,
254    pub parts_cost: Decimal,
255    pub total_cost: Decimal,
256    pub maintenance_expense_account_id: Option<Uuid>,
257    pub parts_inventory_account_id: Option<Uuid>,
258    pub labor_payable_account_id: Option<Uuid>,
259    pub journal_id: Option<Uuid>,
260    pub accounting_post_id: Option<Uuid>,
261    pub notes: Option<String>,
262    pub metadata: serde_json::Value,
263}
264
265/// Summary view of MaintenanceVisit for list displays
266#[derive(Debug, Clone, Serialize, Deserialize)]
267pub struct MaintenanceVisitSummary {
268    pub id: MaintenanceVisitId,
269    pub status: VisitStatus,
270}
271
272/// Reference to MaintenanceVisit for foreign key relationships
273#[derive(Debug, Clone, Serialize, Deserialize)]
274pub struct MaintenanceVisitRef {
275    pub id: MaintenanceVisitId,
276}
277
278// ============================================================================
279// MAINTENANCEVISITPART TYPES
280// ============================================================================
281
282/// Type-safe ID for MaintenanceVisitPart
283///
284/// Use this instead of raw Uuid for type safety across modules.
285#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
286pub struct MaintenanceVisitPartId(pub Uuid);
287
288impl MaintenanceVisitPartId {
289    pub fn new(id: Uuid) -> Self {
290        Self(id)
291    }
292
293    pub fn into_inner(self) -> Uuid {
294        self.0
295    }
296}
297
298impl From<Uuid> for MaintenanceVisitPartId {
299    fn from(id: Uuid) -> Self {
300        Self(id)
301    }
302}
303
304impl From<MaintenanceVisitPartId> for Uuid {
305    fn from(id: MaintenanceVisitPartId) -> Self {
306        id.0
307    }
308}
309
310/// Data transfer object for MaintenanceVisitPart
311///
312/// This is the public representation of MaintenanceVisitPart for other modules.
313#[derive(Debug, Clone, Serialize, Deserialize)]
314pub struct MaintenanceVisitPartDto {
315    pub id: MaintenanceVisitPartId,
316    pub visit_id: Uuid,
317    pub item_id: Uuid,
318    pub quantity: Decimal,
319    pub unit_cost: Decimal,
320    pub amount: Decimal,
321    pub metadata: serde_json::Value,
322}
323
324/// Summary view of MaintenanceVisitPart for list displays
325#[derive(Debug, Clone, Serialize, Deserialize)]
326pub struct MaintenanceVisitPartSummary {
327    pub id: MaintenanceVisitPartId,
328}
329
330/// Reference to MaintenanceVisitPart for foreign key relationships
331#[derive(Debug, Clone, Serialize, Deserialize)]
332pub struct MaintenanceVisitPartRef {
333    pub id: MaintenanceVisitPartId,
334}
335
336// ============================================================================
337// CUSTOM TYPES
338// ============================================================================
339
340// <<< CUSTOM TYPES START >>>
341// Add custom public types here
342// <<< CUSTOM TYPES END >>>