Skip to main content

text_document_common/
entities.rs

1// Generated by Qleany v1.4.8 from common_entities.tera
2
3use crate::types::EntityId;
4use crate::types::HasId;
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, PartialEq, 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, 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 character_count: i64,
33    pub block_count: i64,
34}
35
36impl HasId for Document {
37    fn id(&self) -> EntityId {
38        self.id
39    }
40}
41#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
42pub enum TextDirection {
43    #[default]
44    LeftToRight,
45    RightToLeft,
46}
47#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
48pub enum WrapMode {
49    #[default]
50    NoWrap,
51    WordWrap,
52    WrapAnywhere,
53    WrapAtWordBoundaryOrAnywhere,
54}
55
56#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
57pub struct Frame {
58    pub id: EntityId,
59    pub created_at: chrono::DateTime<chrono::Utc>,
60    pub updated_at: chrono::DateTime<chrono::Utc>,
61    pub parent_frame: Option<EntityId>,
62    pub blocks: Vec<EntityId>,
63    pub child_order: Vec<i64>,
64    pub fmt_height: Option<i64>,
65    pub fmt_width: Option<i64>,
66    pub fmt_top_margin: Option<i64>,
67    pub fmt_bottom_margin: Option<i64>,
68    pub fmt_left_margin: Option<i64>,
69    pub fmt_right_margin: Option<i64>,
70    pub fmt_padding: Option<i64>,
71    pub fmt_border: Option<i64>,
72    pub fmt_position: Option<FramePosition>,
73}
74
75impl HasId for Frame {
76    fn id(&self) -> EntityId {
77        self.id
78    }
79}
80#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
81pub enum FramePosition {
82    #[default]
83    InFlow,
84    FloatLeft,
85    FloatRight,
86}
87
88#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
89pub struct Block {
90    pub id: EntityId,
91    pub created_at: chrono::DateTime<chrono::Utc>,
92    pub updated_at: chrono::DateTime<chrono::Utc>,
93    pub elements: Vec<EntityId>,
94    pub list: Option<EntityId>,
95    pub text_length: i64,
96    pub document_position: i64,
97    pub plain_text: String,
98    pub fmt_alignment: Option<Alignment>,
99    pub fmt_top_margin: Option<i64>,
100    pub fmt_bottom_margin: Option<i64>,
101    pub fmt_left_margin: Option<i64>,
102    pub fmt_right_margin: Option<i64>,
103    pub fmt_heading_level: Option<i64>,
104    pub fmt_indent: Option<i64>,
105    pub fmt_text_indent: Option<i64>,
106    pub fmt_marker: Option<MarkerType>,
107    pub fmt_tab_positions: Vec<i64>,
108}
109
110impl HasId for Block {
111    fn id(&self) -> EntityId {
112        self.id
113    }
114}
115#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
116pub enum Alignment {
117    #[default]
118    Left,
119    Right,
120    Center,
121    Justify,
122}
123#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
124pub enum MarkerType {
125    #[default]
126    NoMarker,
127    Unchecked,
128    Checked,
129}
130
131#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
132pub struct InlineElement {
133    pub id: EntityId,
134    pub created_at: chrono::DateTime<chrono::Utc>,
135    pub updated_at: chrono::DateTime<chrono::Utc>,
136    pub content: InlineContent,
137    pub fmt_font_family: Option<String>,
138    pub fmt_font_point_size: Option<i64>,
139    pub fmt_font_weight: Option<i64>,
140    pub fmt_font_bold: Option<bool>,
141    pub fmt_font_italic: Option<bool>,
142    pub fmt_font_underline: Option<bool>,
143    pub fmt_font_overline: Option<bool>,
144    pub fmt_font_strikeout: Option<bool>,
145    pub fmt_letter_spacing: Option<i64>,
146    pub fmt_word_spacing: Option<i64>,
147    pub fmt_anchor_href: Option<String>,
148    pub fmt_anchor_names: Vec<String>,
149    pub fmt_is_anchor: Option<bool>,
150    pub fmt_tooltip: Option<String>,
151    pub fmt_underline_style: Option<UnderlineStyle>,
152    pub fmt_vertical_alignment: Option<CharVerticalAlignment>,
153}
154
155impl HasId for InlineElement {
156    fn id(&self) -> EntityId {
157        self.id
158    }
159}
160#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
161pub enum InlineContent {
162    #[default]
163    Empty,
164    Text(String),
165    Image {
166        name: String,
167        width: i64,
168        height: i64,
169        quality: i64,
170    },
171}
172#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
173pub enum UnderlineStyle {
174    #[default]
175    NoUnderline,
176    SingleUnderline,
177    DashUnderline,
178    DotLine,
179    DashDotLine,
180    DashDotDotLine,
181    WaveUnderline,
182    SpellCheckUnderline,
183}
184#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
185pub enum CharVerticalAlignment {
186    #[default]
187    Normal,
188    SuperScript,
189    SubScript,
190    Middle,
191    Bottom,
192    Top,
193    Baseline,
194}
195
196#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
197pub struct List {
198    pub id: EntityId,
199    pub created_at: chrono::DateTime<chrono::Utc>,
200    pub updated_at: chrono::DateTime<chrono::Utc>,
201    pub style: ListStyle,
202    pub indent: i64,
203    pub prefix: String,
204    pub suffix: String,
205}
206
207impl HasId for List {
208    fn id(&self) -> EntityId {
209        self.id
210    }
211}
212#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
213pub enum ListStyle {
214    #[default]
215    Disc,
216    Circle,
217    Square,
218    Decimal,
219    LowerAlpha,
220    UpperAlpha,
221    LowerRoman,
222    UpperRoman,
223}
224
225#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
226pub struct Resource {
227    pub id: EntityId,
228    pub created_at: chrono::DateTime<chrono::Utc>,
229    pub updated_at: chrono::DateTime<chrono::Utc>,
230    pub resource_type: ResourceType,
231    pub name: String,
232    pub url: String,
233    pub mime_type: String,
234    pub data_base64: String,
235}
236
237impl HasId for Resource {
238    fn id(&self) -> EntityId {
239        self.id
240    }
241}
242#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq)]
243pub enum ResourceType {
244    #[default]
245    Image,
246    StyleSheet,
247    Other,
248}