Class: OllamaAgent::Runtime::IntegrationQueue

Inherits:
Object
  • Object
show all
Defined in:
lib/ollama_agent/runtime/integration_queue.rb

Overview

Durable integration work queue in runtime.db.

Constant Summary collapse

STATUS_PENDING =
"pending"
STATUS_CLAIMED =
"claimed"
STATUS_DONE =
"done"

Instance Method Summary collapse

Constructor Details

#initialize(db) ⇒ IntegrationQueue

Returns a new instance of IntegrationQueue.

Parameters:

  • db (SQLite3::Database)


14
15
16
# File 'lib/ollama_agent/runtime/integration_queue.rb', line 14

def initialize(db)
  @db = db
end

Instance Method Details

#claim_nextHash?

Returns next pending row as hash, or nil; row is marked claimed.

Returns:

  • (Hash, nil)

    next pending row as hash, or nil; row is marked claimed



28
29
30
31
32
33
# File 'lib/ollama_agent/runtime/integration_queue.rb', line 28

def claim_next
  @db.transaction(:immediate) do
    id = next_pending_id
    id ? claim_row_by_id(id) : nil
  end
end

#enqueue(manifest_id:, payload:, created_at:) ⇒ Object

Parameters:

  • created_at (String)

    logical stamp (no wall clock)



19
20
21
22
23
24
25
# File 'lib/ollama_agent/runtime/integration_queue.rb', line 19

def enqueue(manifest_id:, payload:, created_at:)
  blob = payload.is_a?(String) ? payload : payload.to_s
  @db.execute(
    "INSERT INTO integration_queue (manifest_id, payload, status, created_at) VALUES (?,?,?,?)",
    [manifest_id, blob, STATUS_PENDING, created_at]
  )
end

#mark_done(id:) ⇒ Object

Marks a claimed row done.



36
37
38
39
40
41
# File 'lib/ollama_agent/runtime/integration_queue.rb', line 36

def mark_done(id:)
  @db.execute(
    "UPDATE integration_queue SET status = ? WHERE id = ?",
    [STATUS_DONE, id]
  )
end