use crate::{ entities::view::{CreateViewParams, View}, errors::WorkspaceError, module::WorkspaceDatabase, observable::{send_observable, WorkspaceObservable}, sql_tables::view::{ViewTable, ViewTableSql}, }; use std::sync::Arc; pub struct ViewController { sql: Arc, } impl ViewController { pub fn new(database: Arc) -> Self { let sql = Arc::new(ViewTableSql { database }); Self { sql } } pub async fn create_view(&self, params: CreateViewParams) -> Result { let view_table = ViewTable::new(params); let view: View = view_table.clone().into(); let _ = self.sql.create_view(view_table)?; send_observable(&view.id, WorkspaceObservable::AppAddView); Ok(view) } }