doc_sql.rs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. use crate::{
  2. errors::{internal_error, DocError},
  3. sql_tables::doc::{DocTable, DocTableChangeset},
  4. };
  5. use flowy_database::{
  6. prelude::*,
  7. schema::{doc_table, doc_table::dsl},
  8. ConnectionPool,
  9. SqliteConnection,
  10. };
  11. use std::sync::Arc;
  12. pub struct DocTableSql {}
  13. impl DocTableSql {
  14. pub(crate) fn create_doc_table(&self, doc_table: DocTable, conn: &SqliteConnection) -> Result<(), DocError> {
  15. let _ = diesel::insert_into(doc_table::table).values(doc_table).execute(conn)?;
  16. Ok(())
  17. }
  18. pub(crate) fn update_doc_table(
  19. &self,
  20. changeset: DocTableChangeset,
  21. conn: &SqliteConnection,
  22. ) -> Result<(), DocError> {
  23. diesel_update_table!(doc_table, changeset, conn);
  24. Ok(())
  25. }
  26. pub(crate) fn read_doc_table(&self, doc_id: &str, pool: Arc<ConnectionPool>) -> Result<DocTable, DocError> {
  27. let conn = &*pool.get().map_err(internal_error)?;
  28. let doc_table = dsl::doc_table
  29. .filter(doc_table::id.eq(doc_id))
  30. .first::<DocTable>(conn)?;
  31. Ok(doc_table)
  32. }
  33. #[allow(dead_code)]
  34. pub(crate) fn delete_doc(&self, doc_id: &str, conn: &SqliteConnection) -> Result<DocTable, DocError> {
  35. let doc_table = dsl::doc_table
  36. .filter(doc_table::id.eq(doc_id))
  37. .first::<DocTable>(conn)?;
  38. diesel_delete_table!(doc_table, doc_id, conn);
  39. Ok(doc_table)
  40. }
  41. }