Module: AsktiveRecord::Model::ClassMethods

Includes:
SchemaLoader
Defined in:
lib/asktive_record/model.rb

Overview

Provides class-level methods for AsktiveRecord models, enabling natural language queries and configuration checks.

Instance Method Summary collapse

Methods included from SchemaLoader

#ensure_schema_is_not_empty!, #load_schema_content, #validate_llm_api_key!

Instance Method Details

#ask(natural_language_query) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/asktive_record/model.rb', line 21

def ask(natural_language_query)
  validate_llm_api_key!

  schema_content = load_schema_content
  ensure_schema_is_not_empty!(schema_content)

  llm_service = AsktiveRecord::LlmService.new(AsktiveRecord.configuration)
  current_table_name = respond_to?(:table_name) ? table_name : name.downcase.pluralize

  raw_sql = llm_service.generate_sql(natural_language_query, schema_content, current_table_name)

  AsktiveRecord::Query.new(natural_language_query, raw_sql, self)
end

#asktive_recordObject

Raises:



13
14
15
16
17
18
19
# File 'lib/asktive_record/model.rb', line 13

def asktive_record
  return if AsktiveRecord.configuration

  raise ConfigurationError,
        "AsktiveRecord is not configured. Please run the installer and " \
        "ensure config/initializers/asktive_record.rb is set up."
end