Sha256: 5b99453302a40274f0dbed5e7f46eecab9383f689ef90101c0da103d426168ab

Contents?: true

Size: 1.32 KB

Versions: 17

Compression:

Stored size: 1.32 KB

Contents

# frozen_string_literal: true

# Boxcars is a framework for running a series of tools to get an answer to a question.
module Boxcars
  # A Boxcar that interprets a prompt and executes SQL code using Active Record to get answers
  class SQLActiveRecord < SQLBase
    # @param connection [ActiveRecord::Connection] The SQL connection to use for this boxcar.
    # @param tables [Array<String>] The tables to use for this boxcar. Will use all if nil.
    # @param except_tables [Array<String>] The tables to exclude from this boxcar. Will exclude none if nil.
    # @param kwargs [Hash] Any other keyword arguments to pass to the parent class. This can include
    #   :name, :description, :prompt, :top_k, :stop, and :engine
    def initialize(connection: nil, tables: nil, except_tables: nil, **kwargs)
      connection ||= ::ActiveRecord::Base.connection
      super(connection: connection, tables: tables, except_tables: except_tables, **kwargs)
    end

    private

    def table_schema(table)
      ["CREATE TABLE #{table} (",
       connection&.columns(table)&.map { |c| " #{c.name} #{c.sql_type} #{c.null ? "NULL" : "NOT NULL"}" }&.join(",\n"),
       ");"].join("\n")
    end

    def dialect
      connection.class.name.split("::").last.sub("Adapter", "")
    end

    def get_output(code)
      connection&.exec_query(code)
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
boxcars-0.4.10 lib/boxcars/boxcar/sql_active_record.rb
boxcars-0.4.9 lib/boxcars/boxcar/sql_active_record.rb
boxcars-0.4.8 lib/boxcars/boxcar/sql_active_record.rb
boxcars-0.4.7 lib/boxcars/boxcar/sql_active_record.rb
boxcars-0.4.6 lib/boxcars/boxcar/sql_active_record.rb
boxcars-0.4.5 lib/boxcars/boxcar/sql_active_record.rb
boxcars-0.4.4 lib/boxcars/boxcar/sql_active_record.rb
boxcars-0.4.3 lib/boxcars/boxcar/sql_active_record.rb
boxcars-0.4.2 lib/boxcars/boxcar/sql_active_record.rb
boxcars-0.4.1 lib/boxcars/boxcar/sql_active_record.rb
boxcars-0.4.0 lib/boxcars/boxcar/sql_active_record.rb
boxcars-0.3.5 lib/boxcars/boxcar/sql_active_record.rb
boxcars-0.3.4 lib/boxcars/boxcar/sql_active_record.rb
boxcars-0.3.3 lib/boxcars/boxcar/sql_active_record.rb
boxcars-0.3.2 lib/boxcars/boxcar/sql_active_record.rb
boxcars-0.3.1 lib/boxcars/boxcar/sql_active_record.rb
boxcars-0.2.16 lib/boxcars/boxcar/sql_active_record.rb