Attesto.PreAuthorizedCodeStore.ETS (Attesto v1.10.0)

Copy Markdown View Source

Single-node ETS implementation of Attesto.PreAuthorizedCodeStore.

Pre-authorized codes live in a public ETS table owned by a GenServer that sweeps expired rows on a fixed interval. take/1 uses :ets.take/2, which fetches and deletes a row in one atomic step, so the single-use guarantee holds against concurrent redemptions on a node. This is a per-node store: a multi-node deployment MUST back Attesto.PreAuthorizedCodeStore with a shared store so a code issued on one node can be redeemed once on another.

Start options

  • :sweep_interval_ms (default 30_000) - how often expired rows are bulk-deleted. Correctness does not depend on sweeping; Attesto.PreAuthorizedCode re-checks expiry after take/1.

Wiring

children = [Attesto.PreAuthorizedCodeStore.ETS]

then pass the module as the store:

Attesto.PreAuthorizedCode.issue(Attesto.PreAuthorizedCodeStore.ETS, attrs)

Summary

Functions

Clear every entry. Test-facing.

Functions

reset()

@spec reset() :: :ok

Clear every entry. Test-facing.

start_link(opts \\ [])

@spec start_link(keyword()) :: GenServer.on_start()