pub struct Project {
pub id: ProjectId,
pub index_root: PathBuf,
/* private fields */
}Expand description
Represents a single code base with its own CodeGraph and caches.
Fields§
§id: ProjectIdUnique identifier for this Project.
index_root: PathBufCanonical path to the project root.
Implementations§
Source§impl Project
impl Project
Sourcepub fn new(index_root: PathBuf) -> Result<Self, ProjectError>
pub fn new(index_root: PathBuf) -> Result<Self, ProjectError>
Create a new Project shell.
The Project is created but not initialized - call initialize() to set up
the CodeGraph and caches.
Configuration is loaded from .sqry-config.toml by walking up from
index_root per 02_DESIGN.md [M3].
§Errors
Returns an error if project configuration fails to load or validate.
Sourcepub fn initialize(&self) -> Result<(), ProjectError>
pub fn initialize(&self) -> Result<(), ProjectError>
Initialize the Project (detect repos, prepare graph caching).
This is separate from new() to allow lazy initialization.
Per PROJECT_ROOT_SPEC.md Section 6.1-6.3, initialization includes:
- Attempts to load persisted state (if
cache.persistent = true) - Falls back to detecting all git repositories under the
index_root - Populates the
repo_indexwithRepoIds - Graph caching is lazy-loaded via
graph()method
Note: File watchers are handled by the LSP layer, not the Project.
§Errors
Returns an error if repository discovery or persistence initialization fails.
Sourcepub fn repo_id_for_file(&self, file_path: &Path) -> Result<RepoId, ProjectError>
pub fn repo_id_for_file(&self, file_path: &Path) -> Result<RepoId, ProjectError>
Get the RepoId for a file path using the cached repo index.
Implements “nearest .git wins” rule per 02_DESIGN.md M2:
- Uses the
repo_indexpopulated duringinitialize() - Returns
RepoId::NONEif no git root found in ancestry
§Arguments
file_path- Path to the file (will be canonicalized)
§Errors
Returns an error if path canonicalization fails.
Sourcepub fn repo_index(&self) -> HashMap<PathBuf, RepoId>
pub fn repo_index(&self) -> HashMap<PathBuf, RepoId>
Get the cached repo index (for advanced use cases).
Returns a copy of the repo index mapping git root paths to RepoIds.
Sourcepub fn is_initialized(&self) -> bool
pub fn is_initialized(&self) -> bool
Check if the Project has been initialized.
Sourcepub fn cancel_operations(&self)
pub fn cancel_operations(&self)
Cancel any in-progress background operations.
Sourcepub fn graph(&self) -> Result<Option<Arc<CodeGraph>>, ProjectError>
pub fn graph(&self) -> Result<Option<Arc<CodeGraph>>, ProjectError>
Load (or reuse) the cached unified graph for this project.
Each Project caches its own CodeGraph to avoid repeated disk I/O
on every handler request.
§Errors
Returns an error when the graph cannot be loaded from disk.
Sourcepub fn clear_graph_cache(&self)
pub fn clear_graph_cache(&self)
Clear the cached unified graph.
Call this when the graph is rebuilt or invalidated.
Sourcepub fn is_cancelled(&self) -> bool
pub fn is_cancelled(&self) -> bool
Check if operations have been cancelled.
Sourcepub fn register_repo(&self, git_root: PathBuf, repo_id: RepoId)
pub fn register_repo(&self, git_root: PathBuf, repo_id: RepoId)
Register a repository in this Project’s repo index.
Sourcepub fn get_repo_id(&self, git_root: &Path) -> Option<RepoId>
pub fn get_repo_id(&self, git_root: &Path) -> Option<RepoId>
Get the RepoId for a git root path.
Sourcepub fn register_file(&self, entry: FileEntry)
pub fn register_file(&self, entry: FileEntry)
Register a file in this Project’s file table.
Sourcepub fn file_count(&self) -> usize
pub fn file_count(&self) -> usize
Get the number of registered files.
Sourcepub fn repo_count(&self) -> usize
pub fn repo_count(&self) -> usize
Get the number of registered repositories.
Sourcepub fn persist_if_configured(&self)
pub fn persist_if_configured(&self)
Persist state if configured.
When cache.persistent = true:
- Persists
repo_index+file_tableas versioned JSON
Per 02_DESIGN.md, uses atomic temp + rename for safety.
§Errors
Logs warnings on failure but does not panic. Returns quietly to allow shutdown to proceed.
Sourcepub fn config(&self) -> &ProjectConfig
pub fn config(&self) -> &ProjectConfig
Get the project configuration.
Returns a reference to the loaded .sqry-config.toml configuration.
Sourcepub fn effective_ignored_dirs(&self) -> Vec<&str>
pub fn effective_ignored_dirs(&self) -> Vec<&str>
Get the effective ignored directories for this project.
Combines default ignored directories with any additional directories specified in the project configuration.
Sourcepub fn is_path_ignored(&self, path: &Path) -> bool
pub fn is_path_ignored(&self, path: &Path) -> bool
Check if a path should be ignored during indexing.
Returns true if the path matches any ignore pattern (and doesn’t match an override include pattern).
Sourcepub fn language_for_path(&self, path: &Path) -> Option<&str>
pub fn language_for_path(&self, path: &Path) -> Option<&str>
Get the language ID for a path based on configuration hints.
Returns the configured language if found, or None for default detection.
Trait Implementations§
Source§impl Debug for Project
A Project represents a single code base with its own CodeGraph and caches.
impl Debug for Project
A Project represents a single code base with its own CodeGraph and caches.
Per PROJECT_ROOT_SPEC and 02_DESIGN.md, each Project:
- Has a unique canonical
index_root - Owns a
CodeGraph(future enhancement), symbol/index caches - Tracks repository metadata via
RepoIndex - Manages file metadata via
FileTable - Loads configuration from
.sqry-config.toml
Auto Trait Implementations§
impl !Freeze for Project
impl !RefUnwindSafe for Project
impl Send for Project
impl Sync for Project
impl Unpin for Project
impl UnsafeUnpin for Project
impl !UnwindSafe for Project
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more