40 lines
1.2 KiB
Rust
Raw Normal View History

2021-07-23 08:14:45 +08:00
use crate::{
2021-07-31 10:50:56 +08:00
errors::DocError,
module::DocumentDatabase,
2021-07-23 08:14:45 +08:00
sql_tables::doc::{DocTable, DocTableChangeset},
};
use flowy_database::{
prelude::*,
schema::{doc_table, doc_table::dsl},
};
use std::sync::Arc;
pub struct DocTableSql {
2021-07-31 10:50:56 +08:00
pub database: Arc<dyn DocumentDatabase>,
2021-07-23 08:14:45 +08:00
}
impl DocTableSql {
2021-07-31 10:50:56 +08:00
pub(crate) fn create_doc_table(&self, doc_table: DocTable) -> Result<(), DocError> {
2021-07-23 08:14:45 +08:00
let conn = self.database.db_connection()?;
2021-09-07 17:12:03 +08:00
let _ = diesel::insert_into(doc_table::table).values(doc_table).execute(&*conn)?;
2021-07-23 08:14:45 +08:00
Ok(())
}
2021-07-31 10:50:56 +08:00
pub(crate) fn update_doc_table(&self, changeset: DocTableChangeset) -> Result<(), DocError> {
2021-07-23 08:14:45 +08:00
let conn = self.database.db_connection()?;
2021-09-07 17:12:03 +08:00
diesel_update_table!(doc_table, changeset, &*conn);
2021-07-23 08:14:45 +08:00
Ok(())
}
2021-07-31 10:50:56 +08:00
pub(crate) fn read_doc_table(&self, doc_id: &str) -> Result<DocTable, DocError> {
2021-07-23 08:14:45 +08:00
let doc_table = dsl::doc_table
.filter(doc_table::id.eq(doc_id))
.first::<DocTable>(&*(self.database.db_connection()?))?;
Ok(doc_table)
}
#[allow(dead_code)]
2021-07-31 10:50:56 +08:00
pub(crate) fn delete_doc(&self, _view_id: &str) -> Result<(), DocError> { unimplemented!() }
2021-07-23 08:14:45 +08:00
}