spreadsheet_mcp/repository/
mod.rs1use crate::model::{WorkbookId, WorkbookListResponse};
2use crate::tools::filters::WorkbookFilter;
3use crate::workbook::WorkbookContext;
4use anyhow::Result;
5
6pub mod path_workspace;
7pub mod virtual_workspace;
8
9pub use path_workspace::PathWorkspaceRepository;
10pub use virtual_workspace::{VirtualWorkbookInput, VirtualWorkspaceRepository};
11
12#[derive(Debug, Clone)]
13pub enum WorkbookSource {
14 Path(std::path::PathBuf),
15 Virtual(String),
16}
17
18#[derive(Debug, Clone)]
19pub struct ResolvedWorkbookRef {
20 pub workbook_id: WorkbookId,
21 pub short_id: String,
22 pub revision_id: Option<String>,
23 pub source: WorkbookSource,
24}
25
26pub trait WorkbookRepository: Send + Sync {
27 fn list(&self, filter: &WorkbookFilter) -> Result<WorkbookListResponse>;
28 fn resolve(&self, id_or_alias: &WorkbookId) -> Result<ResolvedWorkbookRef>;
29 fn load_context(&self, resolved: &ResolvedWorkbookRef) -> Result<WorkbookContext>;
30}