prehnite_core/db/schema/
from_row.rs1use 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}