Namespace Serenity.Persistence.Domain.Services
Classes
StructuredIdentifierValidator
Validates that every caller-supplied field/column identifier used to build a SQL statement is safe to interpolate: letters, digits, and underscores only, not starting with a digit. Identifiers cannot be parameterized like values, so every relational IStructuredStore provider (MySQL, PostgreSQL, SQLite) re-validates every field name against this pattern before it reaches raw SQL text.
StructuredQueryEngine
Pure, in-memory semantic reference for every IStructuredStore query/trim/upsert-comparison operation: filtering, multi-field sorting, distinct-collapsing, pagination, counting, and the "is this candidate better" write-path policy. Every backend (key-value shard, HTTP stub, relational provider) delegates to this engine — or reimplements it identically in its own query language — so query semantics stay identical everywhere.