Problem
RecordData filters are a flat list of string-valued conditions. They can express only an implicit AND. App logic must run extra queries or filter Records in memory when it needs OR groups, nested conditions, or typed values.
Required behavior
- Add a small, composable filter expression contract to the public SDK.
- Support nested all and any groups with field predicates.
- Use typed scalar values for boolean, number, date, datetime, Link, and null comparisons.
- Validate fields and operators from Entity metadata.
- Compile expressions to parameterized SQL.
- Apply the same expression contract to List, Count, Exists, Aggregate, GroupBy, and Lock.
- Preserve permission scopes in every query path.
Acceptance criteria
- App code can express nested AND and OR conditions without raw SQL.
- Invalid fields, operators, and value types return stable validation errors.
- All RecordData query methods use the same expression compiler.
- Existing flat filters have a clear compatibility or migration path.
Problem
RecordData filters are a flat list of string-valued conditions. They can express only an implicit AND. App logic must run extra queries or filter Records in memory when it needs OR groups, nested conditions, or typed values.
Required behavior
Acceptance criteria