Class: OmniAI::Tools::DatabaseTool

Inherits:
OmniAI::Tool
  • Object
show all
Defined in:
lib/omniai/tools/database_tool.rb

Overview

Examples:

db = Sqlite3::Database.new("./db.sqlite")
driver = OmniAI::Tools::Database::Sqlite.new(db:)
tool = OmniAI::Tools::DatabaseTool.new(driver:)
tool.execute(statements: ["SELECT * FROM people"])

Instance Method Summary collapse

Constructor Details

#initialize(driver:, logger: Logger.new(IO::NULL)) ⇒ DatabaseTool

Returns a new instance of DatabaseTool.

Parameters:



68
69
70
71
72
# File 'lib/omniai/tools/database_tool.rb', line 68

def initialize(driver:, logger: Logger.new(IO::NULL))
  super()
  @driver = driver
  @logger = logger
end

Instance Method Details

#execute(statements:) ⇒ Array<Hash>

Examples:

tool = OmniAI::Tools::Database::BaseTool.new
tool.execute(statements: ["SELECT * FROM people"])

Parameters:

  • statements (Array<String>)

Returns:

  • (Array<Hash>)


81
82
83
84
85
86
87
88
89
# File 'lib/omniai/tools/database_tool.rb', line 81

def execute(statements:)
  [].tap do |executions|
    statements.map do |statement|
      execution = perform(statement:).merge(statement:)
      executions << execution
      break unless execution[:status].eql?(:ok)
    end
  end
end

#perform(statement:) ⇒ Object



91
92
93
94
95
96
97
# File 'lib/omniai/tools/database_tool.rb', line 91

def perform(statement:)
  @logger&.info("#perform statement=#{statement.inspect}")

  @driver.perform(statement:).tap do |result|
    @logger&.info(JSON.generate(result))
  end
end