Skip to main content

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    /// Rope byte range occupied by this frame's contents. Plan §1.6
83    /// invariant: all blocks in `Frame.blocks` have byte ranges
84    /// contained within this range, and no two frames' ranges
85    /// overlap. Empty/unset = `(0, 0)`. Internal field — not
86    /// surfaced through DTOs.
87    #[serde(default)]
88    pub byte_range: (u32, u32),
89}
90
91impl HasId for Frame {
92    fn id(&self) -> EntityId {
93        self.id
94    }
95}
96#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
97pub enum FramePosition {
98    #[default]
99    InFlow,
100    FloatLeft,
101    FloatRight,
102}
103
104#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
105pub struct Block {
106    pub id: EntityId,
107    #[serde(with = "chrono::serde::ts_milliseconds")]
108    pub created_at: chrono::DateTime<chrono::Utc>,
109    #[serde(with = "chrono::serde::ts_milliseconds")]
110    pub updated_at: chrono::DateTime<chrono::Utc>,
111    pub list: Option<EntityId>,
112    pub document_position: i64,
113    pub fmt_alignment: Option<Alignment>,
114    pub fmt_top_margin: Option<i64>,
115    pub fmt_bottom_margin: Option<i64>,
116    pub fmt_left_margin: Option<i64>,
117    pub fmt_right_margin: Option<i64>,
118    pub fmt_heading_level: Option<i64>,
119    pub fmt_indent: Option<i64>,
120    pub fmt_text_indent: Option<i64>,
121    pub fmt_marker: Option<MarkerType>,
122    pub fmt_tab_positions: Vec<i64>,
123    pub fmt_line_height: Option<i64>,
124    pub fmt_non_breakable_lines: Option<bool>,
125    pub fmt_direction: Option<TextDirection>,
126    pub fmt_background_color: Option<String>,
127    pub fmt_is_code_block: Option<bool>,
128    pub fmt_code_language: Option<String>,
129}
130
131impl HasId for Block {
132    fn id(&self) -> EntityId {
133        self.id
134    }
135}
136#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
137pub enum Alignment {
138    #[default]
139    Left,
140    Right,
141    Center,
142    Justify,
143}
144#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
145pub enum MarkerType {
146    #[default]
147    NoMarker,
148    Unchecked,
149    Checked,
150}
151
152#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
153pub enum UnderlineStyle {
154    #[default]
155    NoUnderline,
156    SingleUnderline,
157    DashUnderline,
158    DotLine,
159    DashDotLine,
160    DashDotDotLine,
161    WaveUnderline,
162    SpellCheckUnderline,
163}
164#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
165pub enum CharVerticalAlignment {
166    #[default]
167    Normal,
168    SuperScript,
169    SubScript,
170    Middle,
171    Bottom,
172    Top,
173    Baseline,
174}
175
176#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
177pub struct List {
178    pub id: EntityId,
179    #[serde(with = "chrono::serde::ts_milliseconds")]
180    pub created_at: chrono::DateTime<chrono::Utc>,
181    #[serde(with = "chrono::serde::ts_milliseconds")]
182    pub updated_at: chrono::DateTime<chrono::Utc>,
183    pub style: ListStyle,
184    pub indent: i64,
185    pub prefix: String,
186    pub suffix: String,
187}
188
189impl HasId for List {
190    fn id(&self) -> EntityId {
191        self.id
192    }
193}
194#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
195pub enum ListStyle {
196    #[default]
197    Disc,
198    Circle,
199    Square,
200    Decimal,
201    LowerAlpha,
202    UpperAlpha,
203    LowerRoman,
204    UpperRoman,
205}
206
207#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
208pub struct Resource {
209    pub id: EntityId,
210    #[serde(with = "chrono::serde::ts_milliseconds")]
211    pub created_at: chrono::DateTime<chrono::Utc>,
212    #[serde(with = "chrono::serde::ts_milliseconds")]
213    pub updated_at: chrono::DateTime<chrono::Utc>,
214    pub resource_type: ResourceType,
215    pub name: String,
216    pub url: String,
217    pub mime_type: String,
218    pub data_base64: String,
219}
220
221impl HasId for Resource {
222    fn id(&self) -> EntityId {
223        self.id
224    }
225}
226#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
227pub enum ResourceType {
228    #[default]
229    Image,
230    StyleSheet,
231    Other,
232}
233
234#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
235pub struct Table {
236    pub id: EntityId,
237    #[serde(with = "chrono::serde::ts_milliseconds")]
238    pub created_at: chrono::DateTime<chrono::Utc>,
239    #[serde(with = "chrono::serde::ts_milliseconds")]
240    pub updated_at: chrono::DateTime<chrono::Utc>,
241    pub cells: Vec<EntityId>,
242    pub rows: i64,
243    pub columns: i64,
244    pub column_widths: Vec<i64>,
245    pub fmt_border: Option<i64>,
246    pub fmt_cell_spacing: Option<i64>,
247    pub fmt_cell_padding: Option<i64>,
248    pub fmt_width: Option<i64>,
249    pub fmt_alignment: Option<Alignment>,
250}
251
252impl HasId for Table {
253    fn id(&self) -> EntityId {
254        self.id
255    }
256}
257
258#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
259pub struct TableCell {
260    pub id: EntityId,
261    #[serde(with = "chrono::serde::ts_milliseconds")]
262    pub created_at: chrono::DateTime<chrono::Utc>,
263    #[serde(with = "chrono::serde::ts_milliseconds")]
264    pub updated_at: chrono::DateTime<chrono::Utc>,
265    pub row: i64,
266    pub column: i64,
267    pub row_span: i64,
268    pub column_span: i64,
269    pub cell_frame: Option<EntityId>,
270    pub fmt_padding: Option<i64>,
271    pub fmt_border: Option<i64>,
272    pub fmt_vertical_alignment: Option<CellVerticalAlignment>,
273    pub fmt_background_color: Option<String>,
274}
275
276impl HasId for TableCell {
277    fn id(&self) -> EntityId {
278        self.id
279    }
280}
281#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
282pub enum CellVerticalAlignment {
283    #[default]
284    Top,
285    Middle,
286    Bottom,
287}