Class: Blazer::Ai::QueriesController
- Inherits:
-
ApplicationController
- Object
- BaseController
- ApplicationController
- Blazer::Ai::QueriesController
- 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
#create ⇒ Object
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.}, status: :unprocessable_entity rescue RateLimiter::RateLimitExceeded => e render json: {error: e., retry_after: e.retry_after}, status: :too_many_requests rescue => e Rails.logger.error("[BlazerAI] Generation error: #{e.class}: #{e.}") 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 |