Class: Igniter::Store::HTTPAdapter::CompactionActivityHandler

Inherits:
Object
  • Object
show all
Includes:
ResponseHelper
Defined in:
lib/igniter/store/http_adapter.rb

Overview

GET /v1/compaction/activity — normalized compaction lifecycle activity.

Query params (all optional):

?store=orders
?kind=exact_prune
?since=1714000000
?limit=50

Returns same JSON shape as Protocol::Interpreter#compaction_activity. Non-GET → 405. Invalid numeric since/limit → 400.

Instance Method Summary collapse

Constructor Details

#initialize(interpreter) ⇒ CompactionActivityHandler

Returns a new instance of CompactionActivityHandler.



289
290
291
# File 'lib/igniter/store/http_adapter.rb', line 289

def initialize(interpreter)
  @interpreter = interpreter
end

Instance Method Details

#call(env) ⇒ Object



293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
# File 'lib/igniter/store/http_adapter.rb', line 293

def call(env)
  return method_not_allowed unless env["REQUEST_METHOD"] == "GET"

  query = Rack::Utils.parse_query(env["QUERY_STRING"] || "")

  store = query["store"]
  kind  = query["kind"]

  since_raw = query["since"]
  if since_raw
    since = Float(since_raw) rescue nil
    return json_response(400, { error: "Invalid numeric value for 'since': #{since_raw.inspect}" }) if since.nil?
  end

  limit_raw = query["limit"]
  if limit_raw
    limit = Integer(limit_raw, 10) rescue nil
    return json_response(400, { error: "Invalid integer value for 'limit': #{limit_raw.inspect}" }) if limit.nil?
  end

  result = @interpreter.compaction_activity(
    store: store,
    kind:  kind,
    since: since,
    limit: limit
  )
  json_response(200, result)
end