view_sql.rs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. use crate::{
  2. errors::WorkspaceError,
  3. module::WorkspaceDatabase,
  4. sql_tables::view::{ViewTable, ViewTableChangeset},
  5. };
  6. use flowy_database::{
  7. prelude::*,
  8. schema::{view_table, view_table::dsl},
  9. };
  10. use std::sync::Arc;
  11. pub struct ViewTableSql {
  12. pub database: Arc<dyn WorkspaceDatabase>,
  13. }
  14. impl ViewTableSql {
  15. pub(crate) fn create_view(&self, view_table: ViewTable) -> Result<(), WorkspaceError> {
  16. let conn = self.database.db_connection()?;
  17. let _ = diesel::insert_into(view_table::table)
  18. .values(view_table)
  19. .execute(&*conn)?;
  20. Ok(())
  21. }
  22. pub(crate) fn read_view(&self, view_id: &str) -> Result<ViewTable, WorkspaceError> {
  23. let view_table = dsl::view_table
  24. .filter(view_table::id.eq(view_id))
  25. .first::<ViewTable>(&*(self.database.db_connection()?))?;
  26. Ok(view_table)
  27. }
  28. pub(crate) fn update_view(&self, changeset: ViewTableChangeset) -> Result<(), WorkspaceError> {
  29. let conn = self.database.db_connection()?;
  30. diesel_update_table!(view_table, changeset, conn);
  31. Ok(())
  32. }
  33. pub fn delete_view(&self, _view_id: &str) -> Result<(), WorkspaceError> { unimplemented!() }
  34. }