Liking cljdoc? Tell your friends :D

boundary.core.validation.registry

Validation rule registry for tracking and organizing validation rules.

This namespace provides a central registry for validation rules across all modules, enabling:

  • Rule discovery and documentation
  • Coverage tracking
  • Conflict detection
  • Rule composition and reuse

Rule Format: {:rule-id keyword ; Unique identifier (e.g., :user.email/required) :description string ; Human-readable description :category keyword ; :schema | :business | :cross-field | :context :module keyword ; Module name (e.g., :user, :billing) :fields [keyword] ; Affected fields :error-code keyword ; Default error code :validator-fn (fn [data] ...) ; Actual validation function :dependencies [rule-id] ; Required rules (optional) :metadata map} ; Additional metadata (optional)

Design Principles:

  • Registry is atom-based for REPL-friendly development
  • Thread-safe registration
  • Immutable rule definitions
  • Forward-compatible metadata extension
Validation rule registry for tracking and organizing validation rules.

This namespace provides a central registry for validation rules across
all modules, enabling:
- Rule discovery and documentation
- Coverage tracking
- Conflict detection
- Rule composition and reuse

Rule Format:
  {:rule-id        keyword           ; Unique identifier (e.g., :user.email/required)
   :description    string            ; Human-readable description
   :category       keyword           ; :schema | :business | :cross-field | :context
   :module         keyword           ; Module name (e.g., :user, :billing)
   :fields         [keyword]         ; Affected fields
   :error-code     keyword           ; Default error code
   :validator-fn   (fn [data] ...)   ; Actual validation function
   :dependencies   [rule-id]         ; Required rules (optional)
   :metadata       map}              ; Additional metadata (optional)

Design Principles:
- Registry is atom-based for REPL-friendly development
- Thread-safe registration
- Immutable rule definitions
- Forward-compatible metadata extension
raw docstring

clear-registry!clj

(clear-registry!)

Clear all rules from registry (primarily for testing).

Returns: Empty map

Clear all rules from registry (primarily for testing).

Returns:
  Empty map
sourceraw docstring

find-conflicting-rulesclj

(find-conflicting-rules)

Find rules with overlapping fields and categories that might conflict.

Args: None (uses registry)

Returns: Vector of conflict maps {:rule-ids [...] :reason string}

Find rules with overlapping fields and categories that might conflict.

Args:
  None (uses registry)

Returns:
  Vector of conflict maps {:rule-ids [...] :reason string}
sourceraw docstring

find-duplicate-rule-idsclj

(find-duplicate-rule-ids rules)

Find duplicate rule IDs in a collection of rules.

Args: rules: Collection of rule definitions

Returns: Set of duplicate rule-ids

Find duplicate rule IDs in a collection of rules.

Args:
  rules: Collection of rule definitions

Returns:
  Set of duplicate rule-ids
sourceraw docstring

get-all-rulesclj

(get-all-rules)

Get all registered rules.

Returns: Vector of rule definitions

Get all registered rules.

Returns:
  Vector of rule definitions
sourceraw docstring

get-execution-countclj

(get-execution-count rule-id)

Get execution count for a rule.

Args: rule-id: Rule identifier keyword

Returns: Integer execution count (0 if never executed)

Get execution count for a rule.

Args:
  rule-id: Rule identifier keyword

Returns:
  Integer execution count (0 if never executed)
sourceraw docstring

get-execution-statsclj

(get-execution-stats)

Get execution statistics for all rules.

Returns: Map with :total-rules, :executed-rules, :coverage-percent, :by-rule

Example: {:total-rules 50 :executed-rules 45 :coverage-percent 90.0 :by-rule {:user.email/required 100 :user.name/min-length 50 ...}}

Get execution statistics for all rules.

Returns:
  Map with :total-rules, :executed-rules, :coverage-percent, :by-rule

Example:
  {:total-rules 50
   :executed-rules 45
   :coverage-percent 90.0
   :by-rule {:user.email/required 100
             :user.name/min-length 50
             ...}}
sourceraw docstring

get-ruleclj

(get-rule rule-id)

Retrieve a rule definition by id.

Args: rule-id: Rule identifier keyword

Returns: Rule definition map or nil

Retrieve a rule definition by id.

Args:
  rule-id: Rule identifier keyword

Returns:
  Rule definition map or nil
sourceraw docstring

get-rules-by-categoryclj

(get-rules-by-category category)

Get all rules of a specific category.

Args: category: Category keyword (:schema, :business, :cross-field, :context)

Returns: Vector of rule definitions

Get all rules of a specific category.

Args:
  category: Category keyword (:schema, :business, :cross-field, :context)

Returns:
  Vector of rule definitions
sourceraw docstring

get-rules-by-moduleclj

(get-rules-by-module module)

Get all rules for a specific module.

Args: module: Module keyword (e.g., :user, :billing)

Returns: Vector of rule definitions

Get all rules for a specific module.

Args:
  module: Module keyword (e.g., :user, :billing)

Returns:
  Vector of rule definitions
sourceraw docstring

get-rules-for-fieldclj

(get-rules-for-field field)

Get all rules that validate a specific field.

Args: field: Field keyword

Returns: Vector of rule definitions

Get all rules that validate a specific field.

Args:
  field: Field keyword

Returns:
  Vector of rule definitions
sourceraw docstring

register-rule!clj

(register-rule! rule)

Register a validation rule in the global registry.

Args: rule: Rule definition map (must include :rule-id)

Returns: Registered rule definition

Throws: IllegalArgumentException if rule-id is missing or already registered

Example: (register-rule! {:rule-id :user.email/required :description "Email is required for user creation" :category :schema :module :user :fields [:email] :error-code :required :validator-fn (fn [data] (some? (:email data)))})

Register a validation rule in the global registry.

Args:
  rule: Rule definition map (must include :rule-id)

Returns:
  Registered rule definition

Throws:
  IllegalArgumentException if rule-id is missing or already registered

Example:
  (register-rule!
    {:rule-id :user.email/required
     :description "Email is required for user creation"
     :category :schema
     :module :user
     :fields [:email]
     :error-code :required
     :validator-fn (fn [data] (some? (:email data)))})
sourceraw docstring

register-rules!clj

(register-rules! rules)

Register multiple validation rules.

Args: rules: Collection of rule definition maps

Returns: Vector of registered rules

Example: (register-rules! [rule1 rule2 rule3])

Register multiple validation rules.

Args:
  rules: Collection of rule definition maps

Returns:
  Vector of registered rules

Example:
  (register-rules! [rule1 rule2 rule3])
sourceraw docstring

registry-ready?clj

(registry-ready?)

Check if registry is ready for use (has rules registered).

Returns: Boolean indicating readiness

Check if registry is ready for use (has rules registered).

Returns:
  Boolean indicating readiness
sourceraw docstring

registry-statsclj

(registry-stats)

Get statistics about the rule registry.

Returns: Map with counts by module, category, etc.

Get statistics about the rule registry.

Returns:
  Map with counts by module, category, etc.
sourceraw docstring

reset-execution-tracking!clj

(reset-execution-tracking!)

Reset all execution tracking (for testing/benchmarking).

Returns: Empty map

Reset all execution tracking (for testing/benchmarking).

Returns:
  Empty map
sourceraw docstring

track-rule-execution!clj

(track-rule-execution! rule-id)

Record that a rule was executed (for coverage reporting).

Args: rule-id: Rule identifier keyword

Returns: Updated execution count

Record that a rule was executed (for coverage reporting).

Args:
  rule-id: Rule identifier keyword

Returns:
  Updated execution count
sourceraw docstring

unregister-rule!clj

(unregister-rule! rule-id)

Remove a rule from the registry (primarily for testing).

Args: rule-id: Rule identifier keyword

Returns: Removed rule definition or nil

Remove a rule from the registry (primarily for testing).

Args:
  rule-id: Rule identifier keyword

Returns:
  Removed rule definition or nil
sourceraw docstring

valid-rule?clj

(valid-rule? rule)

Check if rule definition is valid.

Args: rule: Rule definition map

Returns: Boolean indicating validity

Check if rule definition is valid.

Args:
  rule: Rule definition map

Returns:
  Boolean indicating validity
sourceraw docstring

validate-ruleclj

(validate-rule rule)

Validate rule definition and return errors.

Args: rule: Rule definition map

Returns: Vector of error strings (empty if valid)

Validate rule definition and return errors.

Args:
  rule: Rule definition map

Returns:
  Vector of error strings (empty if valid)
sourceraw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close