backbone_maintenance/exports/
types.rs1use serde::{Deserialize, Serialize};
9use uuid::Uuid;
10use chrono::{DateTime, Utc, NaiveDate};
11use rust_decimal::Decimal;
12use crate::domain::entity::*;
13
14#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
78pub struct MaintenanceRequestSummary {
79 pub id: MaintenanceRequestId,
80 pub name: String,
81}
82
83#[derive(Debug, Clone, Serialize, Deserialize)]
85pub struct MaintenanceRequestRef {
86 pub id: MaintenanceRequestId,
87}
88
89#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
137pub struct MaintenanceScheduleSummary {
138 pub id: MaintenanceScheduleId,
139 pub name: String,
140 pub status: MaintenanceScheduleStatus,
141}
142
143#[derive(Debug, Clone, Serialize, Deserialize)]
145pub struct MaintenanceScheduleRef {
146 pub id: MaintenanceScheduleId,
147}
148
149#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
196pub struct MaintenanceStageSummary {
197 pub id: MaintenanceStageId,
198 pub name: String,
199}
200
201#[derive(Debug, Clone, Serialize, Deserialize)]
203pub struct MaintenanceStageRef {
204 pub id: MaintenanceStageId,
205}
206
207#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
267pub struct MaintenanceVisitSummary {
268 pub id: MaintenanceVisitId,
269 pub status: VisitStatus,
270}
271
272#[derive(Debug, Clone, Serialize, Deserialize)]
274pub struct MaintenanceVisitRef {
275 pub id: MaintenanceVisitId,
276}
277
278#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
326pub struct MaintenanceVisitPartSummary {
327 pub id: MaintenanceVisitPartId,
328}
329
330#[derive(Debug, Clone, Serialize, Deserialize)]
332pub struct MaintenanceVisitPartRef {
333 pub id: MaintenanceVisitPartId,
334}
335
336