Class: OllamaAgent::Runtime::IntegrationQueue
- Inherits:
-
Object
- Object
- OllamaAgent::Runtime::IntegrationQueue
- 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
-
#claim_next ⇒ Hash?
Next pending row as hash, or nil; row is marked
claimed. - #enqueue(manifest_id:, payload:, created_at:) ⇒ Object
-
#initialize(db) ⇒ IntegrationQueue
constructor
A new instance of IntegrationQueue.
-
#mark_done(id:) ⇒ Object
Marks a claimed row
done.
Constructor Details
#initialize(db) ⇒ IntegrationQueue
Returns a new instance of IntegrationQueue.
14 15 16 |
# File 'lib/ollama_agent/runtime/integration_queue.rb', line 14 def initialize(db) @db = db end |
Instance Method Details
#claim_next ⇒ Hash?
Returns 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
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 |