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