chore: rename entity_type to note_type (#600)

Signed-off-by: phernandez <paul@basicmachines.co>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Paul Hernandez
2026-02-22 20:28:57 -06:00
committed by GitHub
parent e1cccba72d
commit c44291830c
88 changed files with 901 additions and 598 deletions
@@ -603,7 +603,7 @@ class PostgresSearchRepository(SearchRepositoryBase):
permalink: Optional[str] = None,
permalink_match: Optional[str] = None,
title: Optional[str] = None,
types: Optional[List[str]] = None,
note_types: Optional[List[str]] = None,
after_date: Optional[datetime] = None,
search_item_types: Optional[List[SearchItemType]] = None,
metadata_filters: Optional[dict] = None,
@@ -619,7 +619,7 @@ class PostgresSearchRepository(SearchRepositoryBase):
permalink=permalink,
permalink_match=permalink_match,
title=title,
types=types,
note_types=note_types,
after_date=after_date,
search_item_types=search_item_types,
metadata_filters=metadata_filters,
@@ -682,14 +682,14 @@ class PostgresSearchRepository(SearchRepositoryBase):
type_list = ", ".join(f"'{t.value}'" for t in search_item_types)
conditions.append(f"search_index.type IN ({type_list})")
# Handle entity type filter using JSONB containment
if types:
# Handle note type filter using JSONB containment (frontmatter type field)
if note_types:
# Use JSONB @> operator for efficient containment queries
type_conditions = []
for entity_type in types:
# Create JSONB containment condition for each type
for note_type in note_types:
# Create JSONB containment condition for each note type
type_conditions.append(
f'search_index.metadata @> \'{{"entity_type": "{entity_type}"}}\''
f'search_index.metadata @> \'{{"note_type": "{note_type}"}}\''
)
conditions.append(f"({' OR '.join(type_conditions)})")
@@ -37,7 +37,7 @@ class SearchRepository(Protocol):
permalink: Optional[str] = None,
permalink_match: Optional[str] = None,
title: Optional[str] = None,
types: Optional[List[str]] = None,
note_types: Optional[List[str]] = None,
after_date: Optional[datetime] = None,
search_item_types: Optional[List[SearchItemType]] = None,
metadata_filters: Optional[dict] = None,
@@ -108,7 +108,7 @@ class SearchRepositoryBase(ABC):
permalink: Optional[str] = None,
permalink_match: Optional[str] = None,
title: Optional[str] = None,
types: Optional[List[str]] = None,
note_types: Optional[List[str]] = None,
after_date: Optional[datetime] = None,
search_item_types: Optional[List[SearchItemType]] = None,
metadata_filters: Optional[Dict[str, Any]] = None,
@@ -124,7 +124,7 @@ class SearchRepositoryBase(ABC):
permalink: Exact permalink match
permalink_match: Permalink pattern match (supports *)
title: Title search
types: Filter by entity types (from metadata.entity_type)
note_types: Filter by note types (from metadata.note_type)
after_date: Filter by created_at > after_date
search_item_types: Filter by SearchItemType (ENTITY, OBSERVATION, RELATION)
metadata_filters: Structured frontmatter metadata filters
@@ -761,7 +761,7 @@ class SearchRepositoryBase(ABC):
permalink: Optional[str],
permalink_match: Optional[str],
title: Optional[str],
types: Optional[List[str]],
note_types: Optional[List[str]],
after_date: Optional[datetime],
search_item_types: Optional[List[SearchItemType]],
metadata_filters: Optional[dict],
@@ -794,7 +794,7 @@ class SearchRepositoryBase(ABC):
permalink=permalink,
permalink_match=permalink_match,
title=title,
types=types,
note_types=note_types,
after_date=after_date,
search_item_types=search_item_types,
metadata_filters=metadata_filters,
@@ -813,7 +813,7 @@ class SearchRepositoryBase(ABC):
permalink=permalink,
permalink_match=permalink_match,
title=title,
types=types,
note_types=note_types,
after_date=after_date,
search_item_types=search_item_types,
metadata_filters=metadata_filters,
@@ -842,7 +842,7 @@ class SearchRepositoryBase(ABC):
permalink: Optional[str],
permalink_match: Optional[str],
title: Optional[str],
types: Optional[List[str]],
note_types: Optional[List[str]],
after_date: Optional[datetime],
search_item_types: Optional[List[SearchItemType]],
metadata_filters: Optional[dict],
@@ -911,7 +911,7 @@ class SearchRepositoryBase(ABC):
permalink,
permalink_match,
title,
types,
note_types,
after_date,
search_item_types,
metadata_filters,
@@ -924,7 +924,7 @@ class SearchRepositoryBase(ABC):
permalink=permalink,
permalink_match=permalink_match,
title=title,
types=types,
note_types=note_types,
after_date=after_date,
search_item_types=search_item_types,
metadata_filters=metadata_filters,
@@ -1054,7 +1054,7 @@ class SearchRepositoryBase(ABC):
permalink: Optional[str],
permalink_match: Optional[str],
title: Optional[str],
types: Optional[List[str]],
note_types: Optional[List[str]],
after_date: Optional[datetime],
search_item_types: Optional[List[SearchItemType]],
metadata_filters: Optional[dict],
@@ -1074,7 +1074,7 @@ class SearchRepositoryBase(ABC):
permalink=permalink,
permalink_match=permalink_match,
title=title,
types=types,
note_types=note_types,
after_date=after_date,
search_item_types=search_item_types,
metadata_filters=metadata_filters,
@@ -1087,7 +1087,7 @@ class SearchRepositoryBase(ABC):
permalink=permalink,
permalink_match=permalink_match,
title=title,
types=types,
note_types=note_types,
after_date=after_date,
search_item_types=search_item_types,
metadata_filters=metadata_filters,
@@ -588,7 +588,7 @@ class SQLiteSearchRepository(SearchRepositoryBase):
permalink: Optional[str] = None,
permalink_match: Optional[str] = None,
title: Optional[str] = None,
types: Optional[List[str]] = None,
note_types: Optional[List[str]] = None,
after_date: Optional[datetime] = None,
search_item_types: Optional[List[SearchItemType]] = None,
metadata_filters: Optional[dict] = None,
@@ -604,7 +604,7 @@ class SQLiteSearchRepository(SearchRepositoryBase):
permalink=permalink,
permalink_match=permalink_match,
title=title,
types=types,
note_types=note_types,
after_date=after_date,
search_item_types=search_item_types,
metadata_filters=metadata_filters,
@@ -671,11 +671,11 @@ class SQLiteSearchRepository(SearchRepositoryBase):
type_list = ", ".join(f"'{t.value}'" for t in search_item_types)
conditions.append(f"search_index.type IN ({type_list})")
# Handle type filter
if types:
type_list = ", ".join(f"'{t}'" for t in types)
# Handle note type filter (frontmatter type field)
if note_types:
type_list = ", ".join(f"'{t}'" for t in note_types)
conditions.append(
f"json_extract(search_index.metadata, '$.entity_type') IN ({type_list})"
f"json_extract(search_index.metadata, '$.note_type') IN ({type_list})"
)
# Handle date filter using datetime() for proper comparison