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 fmt_is_blockquote: Option<bool>,
81    pub table: Option<EntityId>,
82}
83
84impl HasId for Frame {
85    fn id(&self) -> EntityId {
86        self.id
87    }
88}
89#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
90pub enum FramePosition {
91    #[default]
92    InFlow,
93    FloatLeft,
94    FloatRight,
95}
96
97#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
98pub struct Block {
99    pub id: EntityId,
100    #[serde(with = "chrono::serde::ts_milliseconds")]
101    pub created_at: chrono::DateTime<chrono::Utc>,
102    #[serde(with = "chrono::serde::ts_milliseconds")]
103    pub updated_at: chrono::DateTime<chrono::Utc>,
104    pub elements: Vec<EntityId>,
105    pub list: Option<EntityId>,
106    pub text_length: i64,
107    pub document_position: i64,
108    pub plain_text: String,
109    pub fmt_alignment: Option<Alignment>,
110    pub fmt_top_margin: Option<i64>,
111    pub fmt_bottom_margin: Option<i64>,
112    pub fmt_left_margin: Option<i64>,
113    pub fmt_right_margin: Option<i64>,
114    pub fmt_heading_level: Option<i64>,
115    pub fmt_indent: Option<i64>,
116    pub fmt_text_indent: Option<i64>,
117    pub fmt_marker: Option<MarkerType>,
118    pub fmt_tab_positions: Vec<i64>,
119    pub fmt_line_height: Option<i64>,
120    pub fmt_non_breakable_lines: Option<bool>,
121    pub fmt_direction: Option<TextDirection>,
122    pub fmt_background_color: Option<String>,
123    pub fmt_is_code_block: Option<bool>,
124    pub fmt_code_language: Option<String>,
125}
126
127impl HasId for Block {
128    fn id(&self) -> EntityId {
129        self.id
130    }
131}
132#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
133pub enum Alignment {
134    #[default]
135    Left,
136    Right,
137    Center,
138    Justify,
139}
140#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
141pub enum MarkerType {
142    #[default]
143    NoMarker,
144    Unchecked,
145    Checked,
146}
147
148#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
149pub struct InlineElement {
150    pub id: EntityId,
151    #[serde(with = "chrono::serde::ts_milliseconds")]
152    pub created_at: chrono::DateTime<chrono::Utc>,
153    #[serde(with = "chrono::serde::ts_milliseconds")]
154    pub updated_at: chrono::DateTime<chrono::Utc>,
155    pub content: InlineContent,
156    pub fmt_font_family: Option<String>,
157    pub fmt_font_point_size: Option<i64>,
158    pub fmt_font_weight: Option<i64>,
159    pub fmt_font_bold: Option<bool>,
160    pub fmt_font_italic: Option<bool>,
161    pub fmt_font_underline: Option<bool>,
162    pub fmt_font_overline: Option<bool>,
163    pub fmt_font_strikeout: Option<bool>,
164    pub fmt_letter_spacing: Option<i64>,
165    pub fmt_word_spacing: Option<i64>,
166    pub fmt_anchor_href: Option<String>,
167    pub fmt_anchor_names: Vec<String>,
168    pub fmt_is_anchor: Option<bool>,
169    pub fmt_tooltip: Option<String>,
170    pub fmt_underline_style: Option<UnderlineStyle>,
171    pub fmt_vertical_alignment: Option<CharVerticalAlignment>,
172}
173
174impl HasId for InlineElement {
175    fn id(&self) -> EntityId {
176        self.id
177    }
178}
179#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
180pub enum InlineContent {
181    #[default]
182    Empty,
183    Text(String),
184    Image {
185        name: String,
186        width: i64,
187        height: i64,
188        quality: i64,
189    },
190}
191#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
192pub enum UnderlineStyle {
193    #[default]
194    NoUnderline,
195    SingleUnderline,
196    DashUnderline,
197    DotLine,
198    DashDotLine,
199    DashDotDotLine,
200    WaveUnderline,
201    SpellCheckUnderline,
202}
203#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
204pub enum CharVerticalAlignment {
205    #[default]
206    Normal,
207    SuperScript,
208    SubScript,
209    Middle,
210    Bottom,
211    Top,
212    Baseline,
213}
214
215#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
216pub struct List {
217    pub id: EntityId,
218    #[serde(with = "chrono::serde::ts_milliseconds")]
219    pub created_at: chrono::DateTime<chrono::Utc>,
220    #[serde(with = "chrono::serde::ts_milliseconds")]
221    pub updated_at: chrono::DateTime<chrono::Utc>,
222    pub style: ListStyle,
223    pub indent: i64,
224    pub prefix: String,
225    pub suffix: String,
226}
227
228impl HasId for List {
229    fn id(&self) -> EntityId {
230        self.id
231    }
232}
233#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
234pub enum ListStyle {
235    #[default]
236    Disc,
237    Circle,
238    Square,
239    Decimal,
240    LowerAlpha,
241    UpperAlpha,
242    LowerRoman,
243    UpperRoman,
244}
245
246#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
247pub struct Resource {
248    pub id: EntityId,
249    #[serde(with = "chrono::serde::ts_milliseconds")]
250    pub created_at: chrono::DateTime<chrono::Utc>,
251    #[serde(with = "chrono::serde::ts_milliseconds")]
252    pub updated_at: chrono::DateTime<chrono::Utc>,
253    pub resource_type: ResourceType,
254    pub name: String,
255    pub url: String,
256    pub mime_type: String,
257    pub data_base64: String,
258}
259
260impl HasId for Resource {
261    fn id(&self) -> EntityId {
262        self.id
263    }
264}
265#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
266pub enum ResourceType {
267    #[default]
268    Image,
269    StyleSheet,
270    Other,
271}
272
273#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
274pub struct Table {
275    pub id: EntityId,
276    #[serde(with = "chrono::serde::ts_milliseconds")]
277    pub created_at: chrono::DateTime<chrono::Utc>,
278    #[serde(with = "chrono::serde::ts_milliseconds")]
279    pub updated_at: chrono::DateTime<chrono::Utc>,
280    pub cells: Vec<EntityId>,
281    pub rows: i64,
282    pub columns: i64,
283    pub column_widths: Vec<i64>,
284    pub fmt_border: Option<i64>,
285    pub fmt_cell_spacing: Option<i64>,
286    pub fmt_cell_padding: Option<i64>,
287    pub fmt_width: Option<i64>,
288    pub fmt_alignment: Option<Alignment>,
289}
290
291impl HasId for Table {
292    fn id(&self) -> EntityId {
293        self.id
294    }
295}
296
297#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
298pub struct TableCell {
299    pub id: EntityId,
300    #[serde(with = "chrono::serde::ts_milliseconds")]
301    pub created_at: chrono::DateTime<chrono::Utc>,
302    #[serde(with = "chrono::serde::ts_milliseconds")]
303    pub updated_at: chrono::DateTime<chrono::Utc>,
304    pub row: i64,
305    pub column: i64,
306    pub row_span: i64,
307    pub column_span: i64,
308    pub cell_frame: Option<EntityId>,
309    pub fmt_padding: Option<i64>,
310    pub fmt_border: Option<i64>,
311    pub fmt_vertical_alignment: Option<CellVerticalAlignment>,
312    pub fmt_background_color: Option<String>,
313}
314
315impl HasId for TableCell {
316    fn id(&self) -> EntityId {
317        self.id
318    }
319}
320#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
321pub enum CellVerticalAlignment {
322    #[default]
323    Top,
324    Middle,
325    Bottom,
326}