prehnite_core/db/schema/
load.rs

1use crate::db::query;
2use crate::db::schema::{BackgroundInfo, Bibliography, Headline, Item, Paragraph};
3use sqlx::SqliteConnection;
4
5impl BackgroundInfo {
6    pub async fn load_references(
7        &mut self,
8        conn: &mut SqliteConnection,
9    ) -> Result<(), sqlx::Error> {
10        self.references = Some(query::fetch_background_references(conn, self.id).await?);
11        Ok(())
12    }
13}
14
15impl BackgroundInfo {
16    async fn load_all(&mut self, conn: &mut SqliteConnection) -> Result<(), sqlx::Error> {
17        self.load_references(conn).await
18    }
19}
20
21impl Bibliography {
22    pub async fn load_authors(&mut self, conn: &mut SqliteConnection) -> Result<(), sqlx::Error> {
23        self.authors = query::fetch_bibliography_authors(conn, self.id).await?;
24        Ok(())
25    }
26}
27
28impl Bibliography {
29    async fn load_all(&mut self, conn: &mut SqliteConnection) -> Result<(), sqlx::Error> {
30        self.load_authors(conn).await
31    }
32}
33
34impl Item {
35    pub async fn load_references(
36        &mut self,
37        conn: &mut SqliteConnection,
38    ) -> Result<(), sqlx::Error> {
39        self.references = Some(query::fetch_item_references(conn, self.id).await?);
40        Ok(())
41    }
42
43    pub async fn load_tags(&mut self, conn: &mut SqliteConnection) -> Result<(), sqlx::Error> {
44        self.tags = Some(query::fetch_item_related_tags(conn, self.id).await?);
45        Ok(())
46    }
47
48    pub async fn load_background_info_list(
49        &mut self,
50        conn: &mut SqliteConnection,
51    ) -> Result<(), sqlx::Error> {
52        self.background_info_list =
53            Some(query::fetch_background_info_from_item_id(conn, self.id).await?);
54        Ok(())
55    }
56
57    pub async fn load_tasks(&mut self, conn: &mut SqliteConnection) -> Result<(), sqlx::Error> {
58        self.tasks = Some(query::fetch_item_related_tasks(conn, self.id).await?);
59        Ok(())
60    }
61}
62
63impl Item {
64    async fn load_all(&mut self, conn: &mut SqliteConnection) -> Result<(), sqlx::Error> {
65        self.load_references(conn).await?;
66        self.load_tags(conn).await?;
67        self.load_background_info_list(conn).await?;
68        self.load_tasks(conn).await
69    }
70}
71
72impl Headline {
73    pub async fn load_paragraph(&mut self, conn: &mut SqliteConnection) -> Result<(), sqlx::Error> {
74        self.paragraph = Some(query::fetch_headline_related_paragraph(conn, self.id).await?);
75        Ok(())
76    }
77}
78
79impl Headline {
80    async fn load_all(&mut self, conn: &mut SqliteConnection) -> Result<(), sqlx::Error> {
81        self.load_paragraph(conn).await
82    }
83}
84
85impl Paragraph {
86    pub async fn load_draft(&mut self, conn: &mut SqliteConnection) -> Result<(), sqlx::Error> {
87        self.draft = Some(query::fetch_paragraph_related_draft(conn, self.id).await?);
88        Ok(())
89    }
90
91    pub async fn load_summary(&mut self, conn: &mut SqliteConnection) -> Result<(), sqlx::Error> {
92        self.summary = Some(query::fetch_paragraph_related_summaries(conn, self.id).await?);
93        Ok(())
94    }
95}
96
97impl Paragraph {
98    async fn load_all(&mut self, conn: &mut SqliteConnection) -> Result<(), sqlx::Error> {
99        self.load_draft(conn).await?;
100        self.load_summary(conn).await
101    }
102}