1use common::entities::CellVerticalAlignment;
4use common::entities::TableCell;
5use common::types::EntityId;
6use serde::{Deserialize, Serialize};
7use std::convert::From;
8
9#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
10pub struct TableCellDto {
11 pub id: EntityId,
12 pub created_at: chrono::DateTime<chrono::Utc>,
13 pub updated_at: chrono::DateTime<chrono::Utc>,
14 pub row: i64,
15 pub column: i64,
16 pub row_span: i64,
17 pub column_span: i64,
18 pub cell_frame: Option<EntityId>,
19 pub fmt_padding: Option<i64>,
20 pub fmt_border: Option<i64>,
21 pub fmt_vertical_alignment: Option<CellVerticalAlignment>,
22 pub fmt_background_color: Option<String>,
23}
24
25impl From<TableCellDto> for TableCell {
26 fn from(dto: TableCellDto) -> Self {
27 TableCell {
28 id: dto.id,
29 created_at: dto.created_at,
30 updated_at: dto.updated_at,
31 row: dto.row,
32 column: dto.column,
33 row_span: dto.row_span,
34 column_span: dto.column_span,
35 cell_frame: dto.cell_frame,
36 fmt_padding: dto.fmt_padding,
37 fmt_border: dto.fmt_border,
38 fmt_vertical_alignment: dto.fmt_vertical_alignment,
39 fmt_background_color: dto.fmt_background_color,
40 }
41 }
42}
43
44impl From<&TableCellDto> for TableCell {
45 fn from(dto: &TableCellDto) -> Self {
46 TableCell {
47 id: dto.id,
48 created_at: dto.created_at,
49 updated_at: dto.updated_at,
50 row: dto.row,
51 column: dto.column,
52 row_span: dto.row_span,
53 column_span: dto.column_span,
54 cell_frame: dto.cell_frame,
55 fmt_padding: dto.fmt_padding,
56 fmt_border: dto.fmt_border,
57 fmt_vertical_alignment: dto.fmt_vertical_alignment.clone(),
58 fmt_background_color: dto.fmt_background_color.clone(),
59 }
60 }
61}
62
63impl From<TableCell> for TableCellDto {
64 fn from(entity: TableCell) -> Self {
65 TableCellDto {
66 id: entity.id,
67 created_at: entity.created_at,
68 updated_at: entity.updated_at,
69 row: entity.row,
70 column: entity.column,
71 row_span: entity.row_span,
72 column_span: entity.column_span,
73 cell_frame: entity.cell_frame,
74 fmt_padding: entity.fmt_padding,
75 fmt_border: entity.fmt_border,
76 fmt_vertical_alignment: entity.fmt_vertical_alignment,
77 fmt_background_color: entity.fmt_background_color,
78 }
79 }
80}
81
82#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
83pub struct CreateTableCellDto {
84 pub created_at: chrono::DateTime<chrono::Utc>,
85 pub updated_at: chrono::DateTime<chrono::Utc>,
86 pub row: i64,
87 pub column: i64,
88 pub row_span: i64,
89 pub column_span: i64,
90 pub cell_frame: Option<EntityId>,
91 pub fmt_padding: Option<i64>,
92 pub fmt_border: Option<i64>,
93 pub fmt_vertical_alignment: Option<CellVerticalAlignment>,
94 pub fmt_background_color: Option<String>,
95}
96
97impl From<CreateTableCellDto> for TableCell {
98 fn from(dto: CreateTableCellDto) -> Self {
99 TableCell {
100 id: 0,
101 created_at: dto.created_at,
102 updated_at: dto.updated_at,
103 row: dto.row,
104 column: dto.column,
105 row_span: dto.row_span,
106 column_span: dto.column_span,
107 cell_frame: dto.cell_frame,
108 fmt_padding: dto.fmt_padding,
109 fmt_border: dto.fmt_border,
110 fmt_vertical_alignment: dto.fmt_vertical_alignment,
111 fmt_background_color: dto.fmt_background_color,
112 }
113 }
114}
115
116impl From<&CreateTableCellDto> for TableCell {
117 fn from(dto: &CreateTableCellDto) -> Self {
118 TableCell {
119 id: 0,
120 created_at: dto.created_at,
121 updated_at: dto.updated_at,
122 row: dto.row,
123 column: dto.column,
124 row_span: dto.row_span,
125 column_span: dto.column_span,
126 cell_frame: dto.cell_frame,
127 fmt_padding: dto.fmt_padding,
128 fmt_border: dto.fmt_border,
129 fmt_vertical_alignment: dto.fmt_vertical_alignment.clone(),
130 fmt_background_color: dto.fmt_background_color.clone(),
131 }
132 }
133}
134
135impl From<TableCell> for CreateTableCellDto {
136 fn from(entity: TableCell) -> Self {
137 CreateTableCellDto {
138 created_at: entity.created_at,
139 updated_at: entity.updated_at,
140 row: entity.row,
141 column: entity.column,
142 row_span: entity.row_span,
143 column_span: entity.column_span,
144 cell_frame: entity.cell_frame,
145 fmt_padding: entity.fmt_padding,
146 fmt_border: entity.fmt_border,
147 fmt_vertical_alignment: entity.fmt_vertical_alignment,
148 fmt_background_color: entity.fmt_background_color,
149 }
150 }
151}
152
153#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
154pub struct UpdateTableCellDto {
155 pub id: EntityId,
156 pub created_at: chrono::DateTime<chrono::Utc>,
157 pub updated_at: chrono::DateTime<chrono::Utc>,
158 pub row: i64,
159 pub column: i64,
160 pub row_span: i64,
161 pub column_span: i64,
162 pub fmt_padding: Option<i64>,
163 pub fmt_border: Option<i64>,
164 pub fmt_vertical_alignment: Option<CellVerticalAlignment>,
165 pub fmt_background_color: Option<String>,
166}
167
168impl From<UpdateTableCellDto> for TableCell {
169 fn from(dto: UpdateTableCellDto) -> Self {
170 TableCell {
171 id: dto.id,
172 created_at: dto.created_at,
173 updated_at: dto.updated_at,
174 row: dto.row,
175 column: dto.column,
176 row_span: dto.row_span,
177 column_span: dto.column_span,
178 fmt_padding: dto.fmt_padding,
179 fmt_border: dto.fmt_border,
180 fmt_vertical_alignment: dto.fmt_vertical_alignment,
181 fmt_background_color: dto.fmt_background_color,
182 cell_frame: Default::default(),
183 }
184 }
185}
186
187impl From<&UpdateTableCellDto> for TableCell {
188 fn from(dto: &UpdateTableCellDto) -> Self {
189 TableCell {
190 id: dto.id,
191 created_at: dto.created_at,
192 updated_at: dto.updated_at,
193 row: dto.row,
194 column: dto.column,
195 row_span: dto.row_span,
196 column_span: dto.column_span,
197 fmt_padding: dto.fmt_padding,
198 fmt_border: dto.fmt_border,
199 fmt_vertical_alignment: dto.fmt_vertical_alignment.clone(),
200 fmt_background_color: dto.fmt_background_color.clone(),
201 cell_frame: Default::default(),
202 }
203 }
204}
205
206impl From<TableCell> for UpdateTableCellDto {
207 fn from(entity: TableCell) -> Self {
208 UpdateTableCellDto {
209 id: entity.id,
210 created_at: entity.created_at,
211 updated_at: entity.updated_at,
212 row: entity.row,
213 column: entity.column,
214 row_span: entity.row_span,
215 column_span: entity.column_span,
216 fmt_padding: entity.fmt_padding,
217 fmt_border: entity.fmt_border,
218 fmt_vertical_alignment: entity.fmt_vertical_alignment,
219 fmt_background_color: entity.fmt_background_color,
220 }
221 }
222}
223
224impl From<TableCellDto> for UpdateTableCellDto {
225 fn from(dto: TableCellDto) -> Self {
226 UpdateTableCellDto {
227 id: dto.id,
228 created_at: dto.created_at,
229 updated_at: dto.updated_at,
230 row: dto.row,
231 column: dto.column,
232 row_span: dto.row_span,
233 column_span: dto.column_span,
234 fmt_padding: dto.fmt_padding,
235 fmt_border: dto.fmt_border,
236 fmt_vertical_alignment: dto.fmt_vertical_alignment,
237 fmt_background_color: dto.fmt_background_color,
238 }
239 }
240}
241pub use common::direct_access::table_cell::TableCellRelationshipField;
242
243#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
244pub struct TableCellRelationshipDto {
245 pub id: EntityId,
246 pub field: TableCellRelationshipField,
247 pub right_ids: Vec<EntityId>,
248}