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