Add Dalidou storage foundation and deployment prep
This commit is contained in:
@@ -6,6 +6,7 @@ import time
|
||||
import uuid
|
||||
from pathlib import Path
|
||||
|
||||
import atocore.config as _config
|
||||
from atocore.ingestion.chunker import chunk_markdown
|
||||
from atocore.ingestion.parser import parse_markdown
|
||||
from atocore.models.database import get_connection
|
||||
@@ -189,6 +190,52 @@ def ingest_folder(folder_path: Path, purge_deleted: bool = True) -> list[dict]:
|
||||
return results
|
||||
|
||||
|
||||
def get_source_status() -> list[dict]:
|
||||
"""Describe configured source directories and their readiness."""
|
||||
sources = []
|
||||
for spec in _config.settings.source_specs:
|
||||
path = spec["path"]
|
||||
assert isinstance(path, Path)
|
||||
sources.append(
|
||||
{
|
||||
"name": spec["name"],
|
||||
"enabled": spec["enabled"],
|
||||
"path": str(path),
|
||||
"exists": path.exists(),
|
||||
"is_dir": path.is_dir(),
|
||||
"read_only": spec["read_only"],
|
||||
}
|
||||
)
|
||||
return sources
|
||||
|
||||
|
||||
def ingest_configured_sources(purge_deleted: bool = False) -> list[dict]:
|
||||
"""Ingest enabled source directories declared in config.
|
||||
|
||||
Purge is disabled by default here because sources are intended to be
|
||||
read-only inputs and should not be treated as the primary writable state.
|
||||
"""
|
||||
results = []
|
||||
for source in get_source_status():
|
||||
if not source["enabled"]:
|
||||
results.append({"source": source["name"], "status": "disabled", "path": source["path"]})
|
||||
continue
|
||||
if not source["exists"] or not source["is_dir"]:
|
||||
results.append({"source": source["name"], "status": "missing", "path": source["path"]})
|
||||
continue
|
||||
|
||||
folder_results = ingest_folder(Path(source["path"]), purge_deleted=purge_deleted)
|
||||
results.append(
|
||||
{
|
||||
"source": source["name"],
|
||||
"status": "ingested",
|
||||
"path": source["path"],
|
||||
"results": folder_results,
|
||||
}
|
||||
)
|
||||
return results
|
||||
|
||||
|
||||
def get_ingestion_stats() -> dict:
|
||||
"""Return ingestion statistics."""
|
||||
with get_connection() as conn:
|
||||
|
||||
Reference in New Issue
Block a user