tandem-memory 0.6.5

Memory storage and embedding utilities for Tandem
impl MemoryDatabase {
    pub async fn update_file_chunks_metadata_by_path_for_tenant(
        &self,
        tier: MemoryTier,
        session_id: Option<&str>,
        project_id: Option<&str>,
        source_path: &str,
        tenant_scope: &MemoryTenantScope,
        metadata: &serde_json::Value,
    ) -> MemoryResult<usize> {
        self.deny_local_scope_in_strict_mode("memory metadata backfill", tenant_scope)?;
        let metadata_plain = metadata.to_string();
        let metadata_stored = if metadata_plain.is_empty() {
            String::new()
        } else {
            self.crypto.encrypt_field(&metadata_plain)?
        };
        let conn = self.conn.lock().await;
        let changed = match tier {
            MemoryTier::Session => {
                let session_id = require_scope_id(tier, session_id)?;
                conn.execute(
                    "UPDATE session_memory_chunks
                     SET metadata = ?1
                     WHERE session_id = ?2 AND source = 'file' AND source_path = ?3
                       AND tenant_org_id = ?4
                       AND tenant_workspace_id = ?5
                       AND IFNULL(tenant_deployment_id, '') = IFNULL(?6, '')",
                    params![
                        metadata_stored,
                        session_id,
                        source_path,
                        tenant_scope.org_id.as_str(),
                        tenant_scope.workspace_id.as_str(),
                        tenant_scope.deployment_id.as_deref()
                    ],
                )?
            }
            MemoryTier::Project => {
                let project_id = require_scope_id(tier, project_id)?;
                conn.execute(
                    "UPDATE project_memory_chunks
                     SET metadata = ?1
                     WHERE project_id = ?2 AND source = 'file' AND source_path = ?3
                       AND tenant_org_id = ?4
                       AND tenant_workspace_id = ?5
                       AND IFNULL(tenant_deployment_id, '') = IFNULL(?6, '')",
                    params![
                        metadata_stored,
                        project_id,
                        source_path,
                        tenant_scope.org_id.as_str(),
                        tenant_scope.workspace_id.as_str(),
                        tenant_scope.deployment_id.as_deref()
                    ],
                )?
            }
            MemoryTier::Global => conn.execute(
                "UPDATE global_memory_chunks
                 SET metadata = ?1
                 WHERE source = 'file' AND source_path = ?2
                   AND tenant_org_id = ?3
                   AND tenant_workspace_id = ?4
                   AND IFNULL(tenant_deployment_id, '') = IFNULL(?5, '')",
                params![
                    metadata_stored,
                    source_path,
                    tenant_scope.org_id.as_str(),
                    tenant_scope.workspace_id.as_str(),
                    tenant_scope.deployment_id.as_deref()
                ],
            )?,
        };
        Ok(changed)
    }
}