1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Default, Deserialize, Serialize)]
4pub struct PrinterItem {
5 pub id: String,
6 pub name: String,
7 pub driver_name: Option<String>,
8 pub job_count: Option<i32>,
9 pub print_processor: Option<String>,
10 pub port_name: Option<String>,
11 pub share_name: Option<String>,
12 pub computer_name: Option<String>,
13 pub printer_status: Option<i32>,
14 pub shared: bool,
15 pub printer_type: Option<i32>,
16 pub priority: Option<i32>,
17 pub is_default: bool,
18}
19
20#[derive(Debug, Deserialize)]
21#[cfg(target_os = "windows")]
22pub(crate) struct PrinterRaw {
23 #[serde(rename = "Name")]
24 pub name: Option<String>,
25 #[serde(rename = "DriverName")]
26 pub driver_name: Option<String>,
27 #[serde(rename = "JobCount")]
28 pub job_count: Option<i32>,
29 #[serde(rename = "PrintProcessor")]
30 pub print_processor: Option<String>,
31 #[serde(rename = "PortName")]
32 pub port_name: Option<String>,
33 #[serde(rename = "ShareName")]
34 pub share_name: Option<String>,
35 #[serde(rename = "ComputerName")]
36 pub computer_name: Option<String>,
37 #[serde(rename = "PrinterStatus")]
38 pub printer_status: Option<i32>,
39 #[serde(rename = "Shared")]
40 pub shared: Option<bool>,
41 #[serde(rename = "Type")]
42 pub printer_type: Option<i32>,
43 #[serde(rename = "Priority")]
44 pub priority: Option<i32>,
45 #[serde(rename = "IsDefault")]
46 pub is_default: Option<bool>,
47}
48
49#[derive(Debug, Clone, Default, Deserialize, Serialize)]
50pub struct PrintJob {
51 pub id: String,
52 pub job_id: i32,
53 pub document_name: Option<String>,
54 pub total_pages: Option<i32>,
55 pub position: Option<i32>,
56 pub size: Option<i64>,
57 pub username: Option<String>,
58 pub pages_printed: Option<i32>,
59 pub job_time: Option<i64>,
60 pub computer_name: Option<String>,
61 pub data_type: Option<String>,
62 pub printer_name: String,
63 pub priority: Option<i32>,
64 pub submitted_time: Option<String>,
65 pub job_status: i32,
66}
67
68#[derive(Debug, Deserialize)]
69#[cfg(target_os = "windows")]
70pub(crate) struct PrintJobRaw {
71 #[serde(rename = "DocumentName")]
72 pub document_name: Option<String>,
73 #[serde(rename = "Id")]
74 pub id: Option<i32>,
75 #[serde(rename = "TotalPages")]
76 pub total_pages: Option<i32>,
77 #[serde(rename = "Position")]
78 pub position: Option<i32>,
79 #[serde(rename = "Size")]
80 pub size: Option<i64>,
81 #[serde(rename = "UserName")]
82 pub username: Option<String>,
83 #[serde(rename = "PagesPrinted")]
84 pub pages_printed: Option<i32>,
85 #[serde(rename = "JobTime")]
86 pub job_time: Option<i64>,
87 #[serde(rename = "ComputerName")]
88 pub computer_name: Option<String>,
89 #[serde(rename = "Datatype")]
90 pub data_type: Option<String>,
91 #[serde(rename = "PrinterName")]
92 pub printer_name: Option<String>,
93 #[serde(rename = "Priority")]
94 pub priority: Option<i32>,
95 #[serde(rename = "SubmittedTime")]
96 pub submitted_time: Option<String>,
97 #[serde(rename = "JobStatus")]
98 pub job_status: Option<i32>,
99}
100
101#[derive(Debug, Clone, Default, Deserialize, Serialize)]
102pub struct PrinterCapabilities {
103 pub printer_name: String,
104 pub color: Option<bool>,
105 pub collate: Option<bool>,
106 pub duplexing_mode: Option<String>,
107 pub paper_size: Option<String>,
108}
109
110#[derive(Debug, Deserialize)]
111#[cfg(target_os = "windows")]
112pub(crate) struct PrinterCapabilitiesRaw {
113 #[serde(rename = "PrinterName")]
114 pub printer_name: Option<String>,
115 #[serde(rename = "Color")]
116 pub color: Option<bool>,
117 #[serde(rename = "Collate")]
118 pub collate: Option<bool>,
119 #[serde(rename = "DuplexingMode")]
120 pub duplexing_mode: Option<String>,
121 #[serde(rename = "PaperSize")]
122 pub paper_size: Option<String>,
123}
124
125#[derive(Debug, Clone, Default, Deserialize, Serialize)]
126pub struct PrintResult {
127 pub success: bool,
128 pub message: String,
129}
130
131#[derive(Debug, Deserialize)]
132pub(crate) struct IdPayload {
133 pub value: String,
134}
135
136#[derive(Debug, Deserialize)]
137#[serde(rename_all = "camelCase")]
138pub(crate) struct PrinterNamePayload {
139 pub printer_name: String,
140}
141
142#[derive(Debug, Deserialize)]
143#[serde(rename_all = "camelCase")]
144pub(crate) struct JobPayload {
145 pub printer_name: String,
146 pub job_id: i32,
147}
148
149#[derive(Debug, Deserialize)]
150#[serde(rename_all = "camelCase")]
151pub(crate) struct PrintPdfPayload {
152 pub printer_name: Option<String>,
153 pub path: String,
154 #[serde(default)]
155 pub settings: String,
156 #[serde(default)]
157 pub remove_after_print: bool,
158}
159
160#[derive(Debug, Deserialize)]
161#[serde(rename_all = "camelCase")]
162pub(crate) struct PrintPdfDataPayload {
163 pub printer_name: Option<String>,
164 pub data: String,
165 #[serde(default)]
166 pub settings: String,
167}