Module: LcpRuby::SavedFilters::Setup

Defined in:
lib/lcp_ruby/saved_filters/setup.rb

Class Method Summary collapse

Class Method Details

.apply!(loader) ⇒ Object

Boot-time setup for saved filters infrastructure. Called after models are built and auditing is set up.

Parameters:



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/lcp_ruby/saved_filters/setup.rb', line 8

def self.apply!(loader)
  # Saved filters are opt-in: only activate if the model is defined
  model_def = loader.model_definitions["saved_filter"]
  return unless model_def

  # Validate the model meets the contract
  result = ContractValidator.validate(model_def)
  unless result.valid?
    message = "Saved filter model 'saved_filter' does not satisfy the contract:\n" \
              "#{result.errors.map { |e| "  - #{e}" }.join("\n")}"

    if LcpRuby.generator_context?
      Rails.logger.warn("[LcpRuby::SavedFilters] #{message}")
      return
    end

    raise MetadataError, message
  end

  result.warnings.each do |warning|
    if defined?(Rails) && Rails.respond_to?(:logger)
      Rails.logger.warn("[LcpRuby::SavedFilters] #{warning}")
    end
  end

  # Install change handler for cache invalidation
  model_class = LcpRuby.registry.model_for("saved_filter")
  ChangeHandler.install!(model_class) if model_class

  # Mark registry as available
  Registry.mark_available!
end