Skip to main content
Glama
erased_components.rs1.6 kB
use std::collections::{ HashMap, HashSet, }; use dal::{ Component, ComponentId, DalContext, }; use si_frontend_mv_types::component::erased_components::{ ErasedComponents, HeadComponent, }; use telemetry::prelude::*; #[instrument( name = "dal_materialized_views.component_list", level = "debug", skip_all )] pub async fn assemble(new_ctx: DalContext) -> crate::Result<ErasedComponents> { let new_ctx = &new_ctx; let old_ctx = new_ctx.clone_with_head().await?; let old_ctx = &old_ctx; if new_ctx.change_set_id() == old_ctx.change_set_id() { return Ok(ErasedComponents { id: new_ctx.workspace_pk()?, erased: HashMap::new(), }); } // Get all of the component Ids on head, and in this change set let old_ids: HashSet<ComponentId> = HashSet::from_iter(Component::list_ids(old_ctx).await?.iter().copied()); let new_ids: HashSet<ComponentId> = HashSet::from_iter(Component::list_ids(new_ctx).await?.iter().copied()); let only_in_old: HashSet<&ComponentId> = old_ids.difference(&new_ids).collect(); let mut erased = HashMap::new(); for &component_id in only_in_old { let diff = super::component_diff::assemble(new_ctx.clone(), component_id).await?; let component = crate::component::assemble_in_list(old_ctx.clone(), component_id).await?; erased.insert(component_id, HeadComponent { diff, component }); } let workspace_mv_id = new_ctx.workspace_pk()?; Ok(ErasedComponents { id: workspace_mv_id, erased, }) }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/systeminit/si'

If you have feedback or need assistance with the MCP directory API, please join our Discord server