| 1 | m.scope IN (SELECT value FROM json_each(:scopes)) |
| 2 | AND NOT EXISTS (SELECT 1 FROM memory_preferences mp WHERE mp.memory_id=m.id AND mp.suppressed=1) |
| 3 | AND (m.status='active' OR (:include_stale=1 AND m.status='stale')) |
| 4 | AND (:include_stale=1 OR ( |
| 5 | (m.expires_at IS NULL OR m.expires_at>:now) |
| 6 | AND (json_extract(m.payload,'$.valid_from') IS NULL OR json_extract(m.payload,'$.valid_from')<=:now) |
| 7 | AND (json_extract(m.payload,'$.valid_until') IS NULL OR json_extract(m.payload,'$.valid_until')>:now) |
| 8 | AND NOT EXISTS ( |
| 9 | SELECT 1 FROM dependencies d |
| 10 | WHERE d.memory_id=m.id AND NOT EXISTS ( |
| 11 | SELECT 1 FROM json_each(:files) f |
| 12 | WHERE f.key=d.path AND f.value=d.digest |
| 13 | ) |
| 14 | ) |
| 15 | AND NOT EXISTS ( |
| 16 | WITH RECURSIVE ancestors(id) AS ( |
| 17 | SELECT parent_id FROM lineage WHERE child_id=m.id |
| 18 | UNION |
| 19 | SELECT l.parent_id FROM lineage l JOIN ancestors a ON l.child_id=a.id |
| 20 | ) |
| 21 | SELECT 1 FROM ancestors a JOIN memories p ON p.id=a.id |
| 22 | WHERE p.status!='active' |
| 23 | OR json_extract(p.payload,'$.valid_from')>:now |
| 24 | OR json_extract(p.payload,'$.valid_until')<=:now |
| 25 | OR (p.expires_at IS NOT NULL AND p.expires_at<=:now) |
| 26 | OR NOT EXISTS (SELECT 1 FROM json_each(:scopes) g WHERE g.value=p.scope) |
| 27 | OR EXISTS ( |
| 28 | SELECT 1 FROM dependencies d WHERE d.memory_id=p.id |
| 29 | AND NOT EXISTS (SELECT 1 FROM json_each(:files) f WHERE f.key=d.path AND f.value=d.digest) |
| 30 | ) |
| 31 | OR (p.repo_revision IS NOT NULL AND (p.repo_revision!=:repo OR :repo IS NULL) |
| 32 | AND NOT EXISTS (SELECT 1 FROM dependencies d WHERE d.memory_id=p.id)) |
| 33 | ) |
| 34 | AND ( |
| 35 | m.repo_revision IS NULL OR m.repo_revision=:repo |
| 36 | OR EXISTS(SELECT 1 FROM dependencies d WHERE d.memory_id=m.id) |
| 37 | ) |
| 38 | )) |
| 39 |