Class: AIRecordFinder::QueryBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/ai_record_finder/query_builder.rb

Overview

Builds an ActiveRecord::Relation from validated DSL.

Instance Method Summary collapse

Constructor Details

#initialize(model:, dsl:, configuration:) ⇒ QueryBuilder

Returns a new instance of QueryBuilder.



6
7
8
9
10
11
# File 'lib/ai_record_finder/query_builder.rb', line 6

def initialize(model:, dsl:, configuration:)
  @model = model
  @dsl = dsl
  @configuration = configuration
  @arel_table = model.arel_table
end

Instance Method Details

#callObject



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/ai_record_finder/query_builder.rb', line 13

def call
  @joins = requested_joins
  SafetyGuard.validate_joins!(model: @model, joins: @joins, configuration: @configuration)

  relation = @model.all
  relation = SafetyGuard.apply_tenant_scope(model: @model, relation: relation)
  relation = apply_joins(relation)
  relation = apply_filters(relation)
  relation = apply_sort(relation)
  relation.limit(@dsl["limit"])
end