43 lines
1.2 KiB
Rust
Raw Normal View History

use crate::{
2021-07-25 08:13:59 +08:00
entities::doc::{CreateDocParams, DocInfo, UpdateDocParams},
2021-07-31 10:50:56 +08:00
errors::DocError,
module::DocumentDatabase,
sql_tables::doc::{DocTable, DocTableChangeset, DocTableSql},
};
use std::sync::Arc;
pub struct DocController {
sql: Arc<DocTableSql>,
}
impl DocController {
2021-07-31 10:50:56 +08:00
pub(crate) fn new(database: Arc<dyn DocumentDatabase>) -> Self {
let sql = Arc::new(DocTableSql { database });
Self { sql }
}
pub(crate) async fn create_doc(
&self,
params: CreateDocParams,
path: &str,
2021-07-31 10:50:56 +08:00
) -> Result<DocInfo, DocError> {
let doc_table = DocTable::new(params, path);
2021-07-24 14:05:49 +08:00
let doc: DocInfo = doc_table.clone().into();
let _ = self.sql.create_doc_table(doc_table)?;
Ok(doc)
}
2021-07-31 10:50:56 +08:00
pub(crate) async fn update_doc(&self, params: UpdateDocParams) -> Result<(), DocError> {
let changeset = DocTableChangeset::new(params);
let _ = self.sql.update_doc_table(changeset)?;
Ok(())
}
2021-07-31 10:50:56 +08:00
pub(crate) async fn read_doc(&self, doc_id: &str) -> Result<DocInfo, DocError> {
let doc_table = self.sql.read_doc_table(doc_id)?;
2021-07-24 14:05:49 +08:00
let doc_desc: DocInfo = doc_table.into();
Ok(doc_desc)
}
}