prehnite_core/db/schema/
from_row.rs

1use crate::db::schema::prefixed_deserializer::PrefixedDeserializer;
2use crate::db::schema::{
3    BackgroundReference, Bibliography, Item, ItemReference, Paragraph, ParagraphLink, Publisher,
4    Task, TaskTemplate,
5};
6use sqlx::sqlite::SqliteRow;
7use sqlx::FromRow;
8
9const PREFIX_PARGRAPH: &'static str = "p_";
10const PREFIX_HEADLINE: &'static str = "h_";
11const PREFIX_DRAFT: &'static str = "d_";
12const PREFIX_TASK: &'static str = "t_";
13const PREFIX_REFERENCE: &'static str = "r_";
14const PREFIX_PUBLISHER: &'static str = "pub_";
15const PREFIX_BIBLIOGRAPHY: &'static str = "b_";
16const PREFIX_TASK_CATEGORY: &'static str = "tc_";
17const PREFIX_TASK_TEMPLATE: &'static str = "tt_";
18const PREFIX_PARAGRAPH_LINK: &'static str = "pl_";
19const PREFIX_FROM_PARAGRAPH: &'static str = "from_p_";
20const PREFIX_FROM_HEADLINE: &'static str = "from_h_";
21const PREFIX_FROM_DRAFT: &'static str = "from_d_";
22const PREFIX_TO_PARAGRAPH: &'static str = "to_p_";
23const PREFIX_TO_HEADLINE: &'static str = "to_h_";
24const PREFIX_TO_DRAFT: &'static str = "to_d_";
25
26impl FromRow<'_, SqliteRow> for Publisher {
27    fn from_row(row: &'_ SqliteRow) -> Result<Self, sqlx::Error> {
28        PrefixedDeserializer::publisher(row, "")
29    }
30}
31
32impl FromRow<'_, SqliteRow> for Bibliography {
33    fn from_row(row: &'_ SqliteRow) -> Result<Self, sqlx::Error> {
34        PrefixedDeserializer::bibliography(row, "", PREFIX_PUBLISHER)
35    }
36}
37
38impl FromRow<'_, SqliteRow> for Item {
39    fn from_row(row: &'_ SqliteRow) -> Result<Self, sqlx::Error> {
40        PrefixedDeserializer::item(row, "", PREFIX_PARGRAPH, PREFIX_HEADLINE, PREFIX_DRAFT)
41    }
42}
43
44impl FromRow<'_, SqliteRow> for Paragraph {
45    fn from_row(row: &'_ SqliteRow) -> Result<Self, sqlx::Error> {
46        PrefixedDeserializer::paragraph(row, "", PREFIX_HEADLINE, PREFIX_DRAFT)
47    }
48}
49
50impl FromRow<'_, SqliteRow> for BackgroundReference {
51    fn from_row(row: &'_ SqliteRow) -> Result<Self, sqlx::Error> {
52        PrefixedDeserializer::background_reference(row, "", PREFIX_BIBLIOGRAPHY, PREFIX_PUBLISHER)
53    }
54}
55
56impl FromRow<'_, SqliteRow> for ItemReference {
57    fn from_row(row: &'_ SqliteRow) -> Result<Self, sqlx::Error> {
58        PrefixedDeserializer::item_reference(row, "", PREFIX_BIBLIOGRAPHY, PREFIX_PUBLISHER)
59    }
60}
61
62impl FromRow<'_, SqliteRow> for TaskTemplate {
63    fn from_row(row: &'_ SqliteRow) -> Result<Self, sqlx::Error> {
64        PrefixedDeserializer::task_template(row, "", PREFIX_TASK_CATEGORY)
65    }
66}
67
68impl FromRow<'_, SqliteRow> for Task {
69    fn from_row(row: &'_ SqliteRow) -> Result<Self, sqlx::Error> {
70        PrefixedDeserializer::task(row, "", PREFIX_TASK_CATEGORY)
71    }
72}
73
74impl FromRow<'_, SqliteRow> for ParagraphLink {
75    fn from_row(row: &'_ SqliteRow) -> Result<Self, sqlx::Error> {
76        PrefixedDeserializer::paragraph_link(
77            row,
78            "",
79            PREFIX_TASK,
80            PREFIX_TASK_CATEGORY,
81            PREFIX_FROM_PARAGRAPH,
82            PREFIX_FROM_HEADLINE,
83            PREFIX_FROM_DRAFT,
84            PREFIX_TO_PARAGRAPH,
85            PREFIX_TO_HEADLINE,
86            PREFIX_TO_DRAFT,
87        )
88    }
89}