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