fix: Update NarratorSummary model to make name_arabic optional and name_transliterated nullable; enhance query filters for non-null Arabic names
This commit is contained in:
parent
f2bab9cadd
commit
5083e377a0
|
|
@ -126,8 +126,8 @@ class HadithDetail(BaseModel):
|
||||||
# ── Narrator ───────────────────────────────────────────────────────────────
|
# ── Narrator ───────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
class NarratorSummary(BaseModel):
|
class NarratorSummary(BaseModel):
|
||||||
name_arabic: str = Field(description="Primary Arabic name")
|
name_arabic: str = Field("", description="Primary Arabic name")
|
||||||
name_transliterated: str = Field("", description="Latin transliteration")
|
name_transliterated: Optional[str] = Field("", description="Latin transliteration")
|
||||||
entity_type: str = Field("", description="PERSON, KUNYA, NISBA, TITLE")
|
entity_type: str = Field("", description="PERSON, KUNYA, NISBA, TITLE")
|
||||||
generation: Optional[str] = Field(None, description="طبقة: صحابي، تابعي، تابع التابعين")
|
generation: Optional[str] = Field(None, description="طبقة: صحابي، تابعي، تابع التابعين")
|
||||||
reliability_grade: Optional[str] = Field(None, description="جرح وتعديل grade: ثقة، صدوق، ضعيف")
|
reliability_grade: Optional[str] = Field(None, description="جرح وتعديل grade: ثقة، صدوق، ضعيف")
|
||||||
|
|
|
||||||
|
|
@ -253,12 +253,14 @@ async def narrators_by_generation(
|
||||||
total = db.neo4j_count("""
|
total = db.neo4j_count("""
|
||||||
MATCH (n:Narrator)
|
MATCH (n:Narrator)
|
||||||
WHERE toLower(n.generation) CONTAINS toLower($gen)
|
WHERE toLower(n.generation) CONTAINS toLower($gen)
|
||||||
|
AND n.name_arabic IS NOT NULL
|
||||||
RETURN count(n) AS count
|
RETURN count(n) AS count
|
||||||
""", {"gen": q_norm})
|
""", {"gen": q_norm})
|
||||||
|
|
||||||
rows = db.neo4j_query("""
|
rows = db.neo4j_query("""
|
||||||
MATCH (n:Narrator)
|
MATCH (n:Narrator)
|
||||||
WHERE toLower(n.generation) CONTAINS toLower($gen)
|
WHERE toLower(n.generation) CONTAINS toLower($gen)
|
||||||
|
AND n.name_arabic IS NOT NULL
|
||||||
OPTIONAL MATCH (n)-[:APPEARS_IN]->(h:Hadith)
|
OPTIONAL MATCH (n)-[:APPEARS_IN]->(h:Hadith)
|
||||||
RETURN n.name_arabic AS name_arabic,
|
RETURN n.name_arabic AS name_arabic,
|
||||||
n.name_transliterated AS name_transliterated,
|
n.name_transliterated AS name_transliterated,
|
||||||
|
|
@ -293,6 +295,7 @@ async def narrators_by_place(
|
||||||
MATCH (n:Narrator)-[r]->(p:Place)
|
MATCH (n:Narrator)-[r]->(p:Place)
|
||||||
WHERE type(r) IN ['BORN_IN', 'LIVED_IN', 'DIED_IN', 'TRAVELED_TO']
|
WHERE type(r) IN ['BORN_IN', 'LIVED_IN', 'DIED_IN', 'TRAVELED_TO']
|
||||||
AND toLower(p.name_arabic) CONTAINS toLower($place)
|
AND toLower(p.name_arabic) CONTAINS toLower($place)
|
||||||
|
AND n.name_arabic IS NOT NULL
|
||||||
RETURN count(DISTINCT n) AS count
|
RETURN count(DISTINCT n) AS count
|
||||||
""", {"place": q_norm})
|
""", {"place": q_norm})
|
||||||
|
|
||||||
|
|
@ -300,6 +303,7 @@ async def narrators_by_place(
|
||||||
MATCH (n:Narrator)-[r]->(p:Place)
|
MATCH (n:Narrator)-[r]->(p:Place)
|
||||||
WHERE type(r) IN ['BORN_IN', 'LIVED_IN', 'DIED_IN', 'TRAVELED_TO']
|
WHERE type(r) IN ['BORN_IN', 'LIVED_IN', 'DIED_IN', 'TRAVELED_TO']
|
||||||
AND toLower(p.name_arabic) CONTAINS toLower($place)
|
AND toLower(p.name_arabic) CONTAINS toLower($place)
|
||||||
|
AND n.name_arabic IS NOT NULL
|
||||||
OPTIONAL MATCH (n)-[:APPEARS_IN]->(h:Hadith)
|
OPTIONAL MATCH (n)-[:APPEARS_IN]->(h:Hadith)
|
||||||
RETURN DISTINCT n.name_arabic AS name_arabic,
|
RETURN DISTINCT n.name_arabic AS name_arabic,
|
||||||
n.name_transliterated AS name_transliterated,
|
n.name_transliterated AS name_transliterated,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue