Evaluation service for audience segments.
Implements IAudienceResolver with a hybrid SQL + predicate pipeline:
FC/IS boundary: this shell namespace is allowed to perform I/O.
Evaluation service for audience segments.
Implements IAudienceResolver with a hybrid SQL + predicate pipeline:
1. Check L1 DB cache (via get-cached-with-ttl when TTL is known).
2. Load definition from in-process registry, fall back to repository.
3. Compile definition into {:sql-clauses [...] :predicates [...]}.
4. If :compose present, resolve composed segments recursively.
5. Phase 1 — SQL: query user IDs via IUserDataSource.query-users-sql.
6. Phase 2 — predicates: load-users for candidates, filter in-process.
7. Build SegmentResult.
8. Cache result when cache + TTL are configured.
9. Return result.
FC/IS boundary: this shell namespace is allowed to perform I/O.(create-audience-service {:keys [repository cache user-data-source]})Create an AudienceService.
Args: opts - map with: :repository - IAudienceRepository (optional, for DB-stored definitions) :cache - AudienceCache (optional) :user-data-source - IUserDataSource (required)
Returns: AudienceService implementing IAudienceResolver
Create an AudienceService.
Args:
opts - map with:
:repository - IAudienceRepository (optional, for DB-stored definitions)
:cache - AudienceCache (optional)
:user-data-source - IUserDataSource (required)
Returns:
AudienceService implementing IAudienceResolvercljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |