fix: add includeInvalidated option to search queries to optionally show invalidated statements (#73)

This commit is contained in:
Manoj 2025-09-15 18:38:15 +05:30 committed by GitHub
parent 15d04fb577
commit e89e7c1024
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -19,14 +19,14 @@ export async function performBM25Search(
// Build the WHERE clause based on timeframe options // Build the WHERE clause based on timeframe options
let timeframeCondition = ` let timeframeCondition = `
AND s.validAt <= $validAt AND s.validAt <= $validAt
AND (s.invalidAt > $validAt) ${options.includeInvalidated ? '' : 'AND (s.invalidAt IS NULL OR s.invalidAt > $validAt)'}
`; `;
// If startTime is provided, add condition to filter by validAt >= startTime // If startTime is provided, add condition to filter by validAt >= startTime
if (options.startTime) { if (options.startTime) {
timeframeCondition = ` timeframeCondition = `
AND s.validAt <= $validAt AND s.validAt <= $validAt
AND (s.invalidAt > $validAt) ${options.includeInvalidated ? '' : 'AND (s.invalidAt IS NULL OR s.invalidAt > $validAt)'}
AND s.validAt >= $startTime AND s.validAt >= $startTime
`; `;
} }
@ -109,14 +109,14 @@ export async function performVectorSearch(
// Build the WHERE clause based on timeframe options // Build the WHERE clause based on timeframe options
let timeframeCondition = ` let timeframeCondition = `
AND s.validAt <= $validAt AND s.validAt <= $validAt
AND (s.invalidAt > $validAt) ${options.includeInvalidated ? '' : 'AND (s.invalidAt IS NULL OR s.invalidAt > $validAt)'}
`; `;
// If startTime is provided, add condition to filter by validAt >= startTime // If startTime is provided, add condition to filter by validAt >= startTime
if (options.startTime) { if (options.startTime) {
timeframeCondition = ` timeframeCondition = `
AND s.validAt <= $validAt AND s.validAt <= $validAt
AND (s.invalidAt > $validAt) ${options.includeInvalidated ? '' : 'AND (s.invalidAt IS NULL OR s.invalidAt > $validAt)'}
AND s.validAt >= $startTime AND s.validAt >= $startTime
`; `;
} }
@ -135,7 +135,7 @@ export async function performVectorSearch(
YIELD node AS s, score YIELD node AS s, score
WHERE s.userId = $userId WHERE s.userId = $userId
AND score >= 0.7 AND score >= 0.7
${timeframeCondition.replace("AND", "AND").replace("WHERE", "AND")} ${timeframeCondition}
${spaceCondition} ${spaceCondition}
OPTIONAL MATCH (episode:Episode)-[:HAS_PROVENANCE]->(s) OPTIONAL MATCH (episode:Episode)-[:HAS_PROVENANCE]->(s)
WITH s, score, count(episode) as provenanceCount WITH s, score, count(episode) as provenanceCount
@ -219,14 +219,14 @@ export async function bfsTraversal(
// Build the WHERE clause based on timeframe options // Build the WHERE clause based on timeframe options
let timeframeCondition = ` let timeframeCondition = `
AND s.validAt <= $validAt AND s.validAt <= $validAt
AND (s.invalidAt > $validAt) ${includeInvalidated ? '' : 'AND (s.invalidAt IS NULL OR s.invalidAt > $validAt)'}
`; `;
// If startTime is provided, add condition to filter by validAt >= startTime // If startTime is provided, add condition to filter by validAt >= startTime
if (startTime) { if (startTime) {
timeframeCondition = ` timeframeCondition = `
AND s.validAt <= $validAt AND s.validAt <= $validAt
AND (s.invalidAt > $validAt) ${includeInvalidated ? '' : 'AND (s.invalidAt IS NULL OR s.invalidAt > $validAt)'}
AND s.validAt >= $startTime AND s.validAt >= $startTime
`; `;
} }
@ -245,8 +245,7 @@ export async function bfsTraversal(
MATCH (e:Entity {uuid: $startEntityId})<-[:HAS_SUBJECT|HAS_OBJECT|HAS_PREDICATE]-(s:Statement) MATCH (e:Entity {uuid: $startEntityId})<-[:HAS_SUBJECT|HAS_OBJECT|HAS_PREDICATE]-(s:Statement)
WHERE WHERE
(s.userId = $userId) (s.userId = $userId)
AND ($includeInvalidated OR s.invalidAt IS NULL) ${includeInvalidated ? 'AND s.validAt <= $validAt' : timeframeCondition}
${timeframeCondition}
${spaceCondition} ${spaceCondition}
RETURN s as statement RETURN s as statement
`; `;