Module: TriCoreDB::LlmSource

Defined in:
lib/tricoredb/builders.rb

Overview

Builders for LlmSource.

Class Method Summary collapse

Class Method Details

.coerce(src) ⇒ Hash

Accepts a built source, or {sql:} / {collection:, filter:, limit:}.

Returns:

  • (Hash)

Raises:

  • (ArgumentError)


129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/tricoredb/builders.rb', line 129

def coerce(src)
  return src if src.is_a?(Hash) && (src.key?("Sql") || src.key?("DocumentFind"))
  raise ArgumentError, "an LLM source must be a Hash" unless src.is_a?(Hash)

  sql_text = src[:sql] || src["sql"]
  return sql(sql_text) if sql_text

  coll = src[:collection] || src["collection"]
  raise ArgumentError, "an LLM source needs :sql or :collection" unless coll

  documents(coll, filter: src[:filter] || src["filter"] || Filter.all, limit: src[:limit] || src["limit"])
end

.documents(collection, filter: Filter.all, limit: nil) ⇒ Hash

Returns:

  • (Hash)


123
124
125
# File 'lib/tricoredb/builders.rb', line 123

def documents(collection, filter: Filter.all, limit: nil)
  { "DocumentFind" => { "collection" => collection.to_s, "filter" => filter, "limit" => limit } }
end

.sql(query) ⇒ Hash

Returns:

  • (Hash)


118
119
120
# File 'lib/tricoredb/builders.rb', line 118

def sql(query)
  { "Sql" => { "query" => query.to_s } }
end