mirror of
https://github.com/basicmachines-co/basic-memory
synced 2026-06-21 13:47:35 +00:00
fix context_service tests
This commit is contained in:
@@ -8,7 +8,7 @@ from loguru import logger
|
||||
from sqlalchemy import text
|
||||
|
||||
from basic_memory.repository.entity_repository import EntityRepository
|
||||
from basic_memory.repository.search_repository import SearchRepository
|
||||
from basic_memory.repository.search_repository import SearchRepository, SearchIndexRow
|
||||
from basic_memory.schemas.memory import MemoryUrl
|
||||
from basic_memory.schemas.search import SearchQuery, SearchItemType
|
||||
|
||||
@@ -64,19 +64,24 @@ class ContextService:
|
||||
# Special mode for finding related content
|
||||
target = memory_url.params["target"]
|
||||
logger.debug(f"Finding related content for '{target}'")
|
||||
|
||||
# start by looking at direct relations
|
||||
primary = await self.find_related_1(target)
|
||||
|
||||
# Pattern matching - use search
|
||||
elif '*' in memory_url.relative_path():
|
||||
logger.debug(f"Pattern search for '{memory_url.relative_path()}'")
|
||||
primary = await self.search_repository.search(permalink_match=memory_url.relative_path())
|
||||
|
||||
# Direct lookup for exact path
|
||||
else:
|
||||
# Direct permalink lookup
|
||||
logger.debug(f"Direct permalink lookup for '{memory_url.relative_path()}'")
|
||||
primary = await self.find_by_permalink(memory_url.relative_path())
|
||||
|
||||
logger.debug(f"Found {len(primary)} primary entities")
|
||||
for p in primary:
|
||||
logger.debug(f"Found primary entity: {p}")
|
||||
|
||||
logger.debug(f"Direct lookup for '{memory_url.relative_path()}'")
|
||||
primary = await self.search_repository.search(permalink=memory_url.relative_path())
|
||||
|
||||
# Get type_id pairs for traversal
|
||||
|
||||
type_id_pairs = [(r.type, r.id) for r in primary] if primary else []
|
||||
logger.debug(f"type_id_pairs: {type_id_pairs}")
|
||||
logger.debug(f"primary type_id_pairs: {type_id_pairs}")
|
||||
|
||||
# Find connected content
|
||||
related = await self.find_connected(type_id_pairs, max_depth=depth, since=since)
|
||||
@@ -99,14 +104,10 @@ class ContextService:
|
||||
},
|
||||
}
|
||||
|
||||
async def find_by_permalink(self, permalink: str):
|
||||
"""Find an entity by exact permalink."""
|
||||
return await self.search_repository.search(permalink=permalink)
|
||||
|
||||
async def find_related_1(self, permalink: str):
|
||||
"""Find entities related to a given permalink."""
|
||||
# First find the target entity
|
||||
target = await self.find_by_permalink(permalink)
|
||||
target = await self.search_repository.search(permalink=permalink)
|
||||
if not target:
|
||||
return []
|
||||
|
||||
|
||||
@@ -57,22 +57,21 @@ class SearchService:
|
||||
2. Pattern match: handles * wildcards in paths
|
||||
3. Text search: full-text search across title/content
|
||||
"""
|
||||
if query.no_criteria():
|
||||
logger.debug("no criteria passed to query")
|
||||
return []
|
||||
|
||||
logger.debug(f"Searching with query: {query}")
|
||||
|
||||
# Determine search mode based on provided parameters
|
||||
if query.permalink:
|
||||
# Exact permalink lookup
|
||||
results = await self.repository.search(permalink=query.permalink)
|
||||
# elif query.permalink_pattern:
|
||||
# # Pattern matching with *
|
||||
# results = await self.repository.search(
|
||||
# SearchQuery(permalink_pattern=query.permalink_pattern)
|
||||
# )
|
||||
elif query.text:
|
||||
# Full-text search
|
||||
results = await self.repository.search(search_text=query.text)
|
||||
else:
|
||||
return [] # No search criteria provide
|
||||
# permalink search
|
||||
results = await self.repository.search(
|
||||
search_text=query.text,
|
||||
permalink=query.permalink,
|
||||
permalink_match=query.permalink_match,
|
||||
types=query.types,
|
||||
entity_types=query.entity_types,
|
||||
after_date=query.after_date,
|
||||
)
|
||||
|
||||
return results
|
||||
|
||||
@@ -281,8 +280,8 @@ class SearchService:
|
||||
relation_type=relation_type,
|
||||
entity_id=entity_id,
|
||||
category=category,
|
||||
created_at= metadata.get("created_at"),
|
||||
updated_at= metadata.get("updated_at"),
|
||||
created_at=metadata.get("created_at"),
|
||||
updated_at=metadata.get("updated_at"),
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user