1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct DataMigrationRunDetail {
17 #[serde(rename = "id")]
18 pub id: i64,
19 #[serde(rename = "job_id", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
21 pub job_id: Option<Option<String>>,
22 #[serde(rename = "created_by")]
23 pub created_by: String,
24 #[serde(rename = "created_at")]
25 pub created_at: String,
26 #[serde(rename = "started_at")]
27 pub started_at: String,
28 #[serde(rename = "updated_at")]
30 pub updated_at: String,
31 #[serde(rename = "completed_at", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
32 pub completed_at: Option<Option<String>>,
33 #[serde(rename = "status")]
34 pub status: Status,
35 #[serde(rename = "source_resource_path")]
36 pub source_resource_path: String,
37 #[serde(rename = "target_resource_path")]
38 pub target_resource_path: String,
39 #[serde(rename = "source_table")]
40 pub source_table: String,
41 #[serde(rename = "target_table")]
42 pub target_table: String,
43 #[serde(rename = "rows_migrated")]
45 pub rows_migrated: i64,
46 #[serde(rename = "batches")]
47 pub batches: i32,
48 #[serde(rename = "conflict_mode")]
49 pub conflict_mode: models::ConflictMode,
50 #[serde(rename = "resume_count")]
52 pub resume_count: i32,
53 #[serde(rename = "has_checkpoint")]
55 pub has_checkpoint: bool,
56 #[serde(rename = "has_pending_batch")]
58 pub has_pending_batch: bool,
59 #[serde(rename = "failed")]
61 pub failed: bool,
62 #[serde(rename = "mapping")]
64 pub mapping: Vec<models::ColumnMapping>,
65 #[serde(rename = "error", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
67 pub error: Option<Option<String>>,
68}
69
70impl DataMigrationRunDetail {
71 pub fn new(id: i64, created_by: String, created_at: String, started_at: String, updated_at: String, status: Status, source_resource_path: String, target_resource_path: String, source_table: String, target_table: String, rows_migrated: i64, batches: i32, conflict_mode: models::ConflictMode, resume_count: i32, has_checkpoint: bool, has_pending_batch: bool, failed: bool, mapping: Vec<models::ColumnMapping>) -> DataMigrationRunDetail {
73 DataMigrationRunDetail {
74 id,
75 job_id: None,
76 created_by,
77 created_at,
78 started_at,
79 updated_at,
80 completed_at: None,
81 status,
82 source_resource_path,
83 target_resource_path,
84 source_table,
85 target_table,
86 rows_migrated,
87 batches,
88 conflict_mode,
89 resume_count,
90 has_checkpoint,
91 has_pending_batch,
92 failed,
93 mapping,
94 error: None,
95 }
96 }
97}
98#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
100pub enum Status {
101 #[serde(rename = "running")]
102 Running,
103 #[serde(rename = "completed")]
104 Completed,
105 #[serde(rename = "failed")]
106 Failed,
107 #[serde(rename = "cancelled")]
108 Cancelled,
109}
110
111impl Default for Status {
112 fn default() -> Status {
113 Self::Running
114 }
115}
116