CMDCTest.Workflow.FakeRunStore (cmdc_test v0.3.1)

Copy Markdown View Source

Shape-compatible fake CMDCOrchestrator.RunStore backend。

本模块不声明 @behaviour CMDCOrchestrator.RunStore,避免 cmdc_testcmdc_orchestrator 形成硬依赖;但函数签名与 RunStore behaviour 对齐。企业 CI 可在安装 cmdc_orchestrator 后这样使用:

setup do
  CMDCTest.Workflow.FakeRunStore.reset!()
  :ok
end

CMDCOrchestrator.start_run(spec, run_store: CMDCTest.Workflow.FakeRunStore)

Summary

Functions

append_event(run_id, event)

@spec append_event(String.t(), term()) :: {:ok, term()}

claim_run(run_id, owner, opts \\ [])

@spec claim_run(String.t(), String.t(), keyword()) :: {:ok, term()} | {:error, term()}

compare_and_update_run(run_id, expected, attrs_or_fun)

@spec compare_and_update_run(
  String.t(),
  map() | (term() -> boolean()),
  map() | (term() -> term())
) :: {:ok, term()} | {:error, term()}

delete_run(run_id)

@spec delete_run(String.t()) :: :ok

get_idempotency(scope, key)

@spec get_idempotency(String.t(), String.t()) :: {:ok, term()} | {:error, :not_found}

list_events(run_id, opts \\ [])

@spec list_events(
  String.t(),
  keyword()
) :: {:ok, [term()]}

list_node_runs(run_id)

@spec list_node_runs(String.t()) :: {:ok, [term()]}

list_runs(opts \\ [])

@spec list_runs(keyword()) :: {:ok, [term()]}

load_run(run_id)

@spec load_run(String.t()) :: {:ok, term()} | {:error, :not_found}

put_idempotency(scope, key, value)

@spec put_idempotency(String.t(), String.t(), term()) :: {:ok, term()}

release_run(run_id, owner)

@spec release_run(String.t(), String.t()) :: :ok | {:error, term()}

reset!()

@spec reset!() :: :ok

清空 fake store。

save_run(run)

@spec save_run(term()) :: {:ok, term()}

update_node_run(run_id, node_id, attrs_or_fun)

@spec update_node_run(String.t(), String.t(), map() | (term() -> term())) ::
  {:ok, term()} | {:error, term()}

update_run(run_id, attrs_or_fun)

@spec update_run(String.t(), map() | (term() -> term())) ::
  {:ok, term()} | {:error, term()}

upsert_node_run(node_run)

@spec upsert_node_run(term()) :: {:ok, term()}