add test_find_by_type_and_name

This commit is contained in:
phernandez
2024-12-11 17:55:54 -06:00
parent 74ff668a0a
commit dbbf5b9263
4 changed files with 95 additions and 3 deletions
+1 -1
View File
@@ -48,7 +48,7 @@ class Entity(Base):
__tablename__ = "entity"
id: Mapped[str] = mapped_column(String, primary_key=True)
name: Mapped[str] = mapped_column(String, unique=True, index=True)
name: Mapped[str] = mapped_column(String, index=True)
entity_type: Mapped[str] = mapped_column(String)
description: Mapped[Optional[str]] = mapped_column(Text, nullable=True)
created_at: Mapped[datetime] = mapped_column(
@@ -59,6 +59,31 @@ class EntityRepository(Repository[Entity]):
except Exception as e:
logger.exception(f"Error finding entity by name: {name}")
raise
async def find_by_type_and_name(self, entity_type: str, name: str) -> Optional[Entity]:
"""Find an entity by its type and name combination."""
logger.debug(f"Finding entity by type and name: {entity_type}/{name}")
try:
query = (
select(Entity)
.filter(Entity.entity_type == entity_type)
.filter(Entity.name == name)
.options(
selectinload(Entity.observations),
selectinload(Entity.outgoing_relations),
selectinload(Entity.incoming_relations)
)
)
result = await self.session.execute(query)
entity = result.scalars().one_or_none()
if entity:
logger.debug(f"Found entity: {entity.id}")
else:
logger.debug(f"No entity found with type/name: {entity_type}/{name}")
return entity
except Exception as e:
logger.exception(f"Error finding entity by type/name: {entity_type}/{name}")
raise
async def search_by_type(self, entity_type: str, skip: int = 0, limit: int = 100) -> Sequence[Entity]:
"""Search for entities of a specific type."""