Class: PromptObjects::Repositories::DefinitionRepository

Inherits:
BaseRepository
  • Object
show all
Defined in:
lib/prompt_objects/repositories/definition_repository.rb

Overview

Persists the exact Prompt Object definition used by a run.

Instance Method Summary collapse

Methods inherited from BaseRepository

#initialize

Constructor Details

This class inherits a constructor from PromptObjects::Repositories::BaseRepository

Instance Method Details

#attach(run_id:, definition:) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/prompt_objects/repositories/definition_repository.rb', line 7

def attach(run_id:, definition:)
  transaction do |db|
    params = [
      run_id, definition.po_name, definition.version, definition.prompt,
      JSON.generate(definition.config), definition.provider, definition.model,
      definition.capability_policy_version, Time.now.utc.iso8601
    ]
    db.execute(<<~SQL, params)
      INSERT INTO run_definitions (
        run_id, po_name, version, prompt, config, provider, model,
        capability_policy_version, created_at
      ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
    SQL
  end
  get(run_id)
end

#get(run_id) ⇒ Object



24
25
26
27
28
29
30
31
32
33
# File 'lib/prompt_objects/repositories/definition_repository.rb', line 24

def get(run_id)
  row = read { |db| db.get_first_row("SELECT * FROM run_definitions WHERE run_id = ?", [run_id]) }
  return nil unless row

  Domain::PromptObjectDefinition.new(
    po_name: row["po_name"], version: row["version"], prompt: row["prompt"],
    config: JSON.parse(row["config"]), provider: row["provider"], model: row["model"],
    capability_policy_version: row["capability_policy_version"]
  )
end