Class: Blazer::Ai::QueriesController

Inherits:
ApplicationController show all
Defined in:
app/controllers/blazer/ai/queries_controller.rb

Overview

Handles AI-powered SQL generation requests. Validates rate limits, sanitizes input, and returns generated SQL.

Instance Method Summary collapse

Instance Method Details

#createObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'app/controllers/blazer/ai/queries_controller.rb', line 6

def create
  rate_limiter.check_and_track!(identifier: current_identifier)

  data_source = find_data_source
  generator = SqlGenerator.new(params: query_params, data_source: data_source)

  sql = generator.call
  log_generation(query_params, sql)

  render json: {sql: sql}
rescue SqlValidator::ValidationError
  render json: {error: "Generated SQL failed safety validation"}, status: :unprocessable_entity
rescue SqlGenerator::GenerationError => e
  render json: {error: e.message}, status: :unprocessable_entity
rescue RateLimiter::RateLimitExceeded => e
  render json: {error: e.message, retry_after: e.retry_after}, status: :too_many_requests
rescue => e
  Rails.logger.error("[BlazerAI] Generation error: #{e.class}: #{e.message}")
  Rails.logger.error(e.backtrace.first(10).join("\n")) if e.backtrace
  render json: {error: "An error occurred while generating SQL. Please try again."}, status: :unprocessable_entity
end