Skip to main content

text_document_common/
entities.rs

1// Generated by Qleany v1.5.6 from common_entities.tera
2
3use crate::types::EntityId;
4use crate::types::HasId;
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
8pub struct Root {
9    pub id: EntityId,
10    #[serde(with = "chrono::serde::ts_milliseconds")]
11    pub created_at: chrono::DateTime<chrono::Utc>,
12    #[serde(with = "chrono::serde::ts_milliseconds")]
13    pub updated_at: chrono::DateTime<chrono::Utc>,
14    pub document: EntityId,
15}
16
17impl HasId for Root {
18    fn id(&self) -> EntityId {
19        self.id
20    }
21}
22
23#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
24pub struct Document {
25    pub id: EntityId,
26    #[serde(with = "chrono::serde::ts_milliseconds")]
27    pub created_at: chrono::DateTime<chrono::Utc>,
28    #[serde(with = "chrono::serde::ts_milliseconds")]
29    pub updated_at: chrono::DateTime<chrono::Utc>,
30    pub title: String,
31    pub frames: Vec<EntityId>,
32    pub text_direction: TextDirection,
33    pub default_wrap_mode: WrapMode,
34    pub resources: Vec<EntityId>,
35    pub lists: Vec<EntityId>,
36    pub tables: Vec<EntityId>,
37    pub character_count: i64,
38    pub block_count: i64,
39}
40
41impl HasId for Document {
42    fn id(&self) -> EntityId {
43        self.id
44    }
45}
46#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
47pub enum TextDirection {
48    #[default]
49    LeftToRight,
50    RightToLeft,
51}
52#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
53pub enum WrapMode {
54    #[default]
55    NoWrap,
56    WordWrap,
57    WrapAnywhere,
58    WrapAtWordBoundaryOrAnywhere,
59}
60
61#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
62pub struct Frame {
63    pub id: EntityId,
64    #[serde(with = "chrono::serde::ts_milliseconds")]
65    pub created_at: chrono::DateTime<chrono::Utc>,
66    #[serde(with = "chrono::serde::ts_milliseconds")]
67    pub updated_at: chrono::DateTime<chrono::Utc>,
68    pub parent_frame: Option<EntityId>,
69    pub blocks: Vec<EntityId>,
70    pub child_order: Vec<i64>,
71    pub fmt_height: Option<i64>,
72    pub fmt_width: Option<i64>,
73    pub fmt_top_margin: Option<i64>,
74    pub fmt_bottom_margin: Option<i64>,
75    pub fmt_left_margin: Option<i64>,
76    pub fmt_right_margin: Option<i64>,
77    pub fmt_padding: Option<i64>,
78    pub fmt_border: Option<i64>,
79    pub fmt_position: Option<FramePosition>,
80    pub table: Option<EntityId>,
81}
82
83impl HasId for Frame {
84    fn id(&self) -> EntityId {
85        self.id
86    }
87}
88#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
89pub enum FramePosition {
90    #[default]
91    InFlow,
92    FloatLeft,
93    FloatRight,
94}
95
96#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
97pub struct Block {
98    pub id: EntityId,
99    #[serde(with = "chrono::serde::ts_milliseconds")]
100    pub created_at: chrono::DateTime<chrono::Utc>,
101    #[serde(with = "chrono::serde::ts_milliseconds")]
102    pub updated_at: chrono::DateTime<chrono::Utc>,
103    pub elements: Vec<EntityId>,
104    pub list: Option<EntityId>,
105    pub text_length: i64,
106    pub document_position: i64,
107    pub plain_text: String,
108    pub fmt_alignment: Option<Alignment>,
109    pub fmt_top_margin: Option<i64>,
110    pub fmt_bottom_margin: Option<i64>,
111    pub fmt_left_margin: Option<i64>,
112    pub fmt_right_margin: Option<i64>,
113    pub fmt_heading_level: Option<i64>,
114    pub fmt_indent: Option<i64>,
115    pub fmt_text_indent: Option<i64>,
116    pub fmt_marker: Option<MarkerType>,
117    pub fmt_tab_positions: Vec<i64>,
118    pub fmt_line_height: Option<i64>,
119    pub fmt_non_breakable_lines: Option<bool>,
120    pub fmt_direction: Option<TextDirection>,
121    pub fmt_background_color: Option<String>,
122}
123
124impl HasId for Block {
125    fn id(&self) -> EntityId {
126        self.id
127    }
128}
129#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
130pub enum Alignment {
131    #[default]
132    Left,
133    Right,
134    Center,
135    Justify,
136}
137#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
138pub enum MarkerType {
139    #[default]
140    NoMarker,
141    Unchecked,
142    Checked,
143}
144
145#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
146pub struct InlineElement {
147    pub id: EntityId,
148    #[serde(with = "chrono::serde::ts_milliseconds")]
149    pub created_at: chrono::DateTime<chrono::Utc>,
150    #[serde(with = "chrono::serde::ts_milliseconds")]
151    pub updated_at: chrono::DateTime<chrono::Utc>,
152    pub content: InlineContent,
153    pub fmt_font_family: Option<String>,
154    pub fmt_font_point_size: Option<i64>,
155    pub fmt_font_weight: Option<i64>,
156    pub fmt_font_bold: Option<bool>,
157    pub fmt_font_italic: Option<bool>,
158    pub fmt_font_underline: Option<bool>,
159    pub fmt_font_overline: Option<bool>,
160    pub fmt_font_strikeout: Option<bool>,
161    pub fmt_letter_spacing: Option<i64>,
162    pub fmt_word_spacing: Option<i64>,
163    pub fmt_anchor_href: Option<String>,
164    pub fmt_anchor_names: Vec<String>,
165    pub fmt_is_anchor: Option<bool>,
166    pub fmt_tooltip: Option<String>,
167    pub fmt_underline_style: Option<UnderlineStyle>,
168    pub fmt_vertical_alignment: Option<CharVerticalAlignment>,
169}
170
171impl HasId for InlineElement {
172    fn id(&self) -> EntityId {
173        self.id
174    }
175}
176#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
177pub enum InlineContent {
178    #[default]
179    Empty,
180    Text(String),
181    Image {
182        name: String,
183        width: i64,
184        height: i64,
185        quality: i64,
186    },
187}
188#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
189pub enum UnderlineStyle {
190    #[default]
191    NoUnderline,
192    SingleUnderline,
193    DashUnderline,
194    DotLine,
195    DashDotLine,
196    DashDotDotLine,
197    WaveUnderline,
198    SpellCheckUnderline,
199}
200#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
201pub enum CharVerticalAlignment {
202    #[default]
203    Normal,
204    SuperScript,
205    SubScript,
206    Middle,
207    Bottom,
208    Top,
209    Baseline,
210}
211
212#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
213pub struct List {
214    pub id: EntityId,
215    #[serde(with = "chrono::serde::ts_milliseconds")]
216    pub created_at: chrono::DateTime<chrono::Utc>,
217    #[serde(with = "chrono::serde::ts_milliseconds")]
218    pub updated_at: chrono::DateTime<chrono::Utc>,
219    pub style: ListStyle,
220    pub indent: i64,
221    pub prefix: String,
222    pub suffix: String,
223}
224
225impl HasId for List {
226    fn id(&self) -> EntityId {
227        self.id
228    }
229}
230#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
231pub enum ListStyle {
232    #[default]
233    Disc,
234    Circle,
235    Square,
236    Decimal,
237    LowerAlpha,
238    UpperAlpha,
239    LowerRoman,
240    UpperRoman,
241}
242
243#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
244pub struct Resource {
245    pub id: EntityId,
246    #[serde(with = "chrono::serde::ts_milliseconds")]
247    pub created_at: chrono::DateTime<chrono::Utc>,
248    #[serde(with = "chrono::serde::ts_milliseconds")]
249    pub updated_at: chrono::DateTime<chrono::Utc>,
250    pub resource_type: ResourceType,
251    pub name: String,
252    pub url: String,
253    pub mime_type: String,
254    pub data_base64: String,
255}
256
257impl HasId for Resource {
258    fn id(&self) -> EntityId {
259        self.id
260    }
261}
262#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
263pub enum ResourceType {
264    #[default]
265    Image,
266    StyleSheet,
267    Other,
268}
269
270#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
271pub struct Table {
272    pub id: EntityId,
273    #[serde(with = "chrono::serde::ts_milliseconds")]
274    pub created_at: chrono::DateTime<chrono::Utc>,
275    #[serde(with = "chrono::serde::ts_milliseconds")]
276    pub updated_at: chrono::DateTime<chrono::Utc>,
277    pub cells: Vec<EntityId>,
278    pub rows: i64,
279    pub columns: i64,
280    pub column_widths: Vec<i64>,
281    pub fmt_border: Option<i64>,
282    pub fmt_cell_spacing: Option<i64>,
283    pub fmt_cell_padding: Option<i64>,
284    pub fmt_width: Option<i64>,
285    pub fmt_alignment: Option<Alignment>,
286}
287
288impl HasId for Table {
289    fn id(&self) -> EntityId {
290        self.id
291    }
292}
293
294#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
295pub struct TableCell {
296    pub id: EntityId,
297    #[serde(with = "chrono::serde::ts_milliseconds")]
298    pub created_at: chrono::DateTime<chrono::Utc>,
299    #[serde(with = "chrono::serde::ts_milliseconds")]
300    pub updated_at: chrono::DateTime<chrono::Utc>,
301    pub row: i64,
302    pub column: i64,
303    pub row_span: i64,
304    pub column_span: i64,
305    pub cell_frame: Option<EntityId>,
306    pub fmt_padding: Option<i64>,
307    pub fmt_border: Option<i64>,
308    pub fmt_vertical_alignment: Option<CellVerticalAlignment>,
309    pub fmt_background_color: Option<String>,
310}
311
312impl HasId for TableCell {
313    fn id(&self) -> EntityId {
314        self.id
315    }
316}
317#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
318pub enum CellVerticalAlignment {
319    #[default]
320    Top,
321    Middle,
322    Bottom,
323}