Lockspire.Storage.Ecto.Repository (lockspire v1.0.0)

Copy Markdown

Default Ecto-backed implementation for Lockspire's domain storage contracts.

Summary

Functions

append_audit_event(event)

@spec append_audit_event(Lockspire.Audit.Event.t() | map()) ::
  {:ok, Lockspire.Audit.Event.t()} | {:error, term()}

fetch_logout_event_by_event_id(event_id)

@spec fetch_logout_event_by_event_id(String.t()) ::
  {:ok, Lockspire.Domain.LogoutEvent.t() | nil} | {:error, term()}

get_client_by_registration_access_token_hash(rat_hash)

@spec get_client_by_registration_access_token_hash(String.t()) ::
  {:ok, Lockspire.Domain.Client.t() | nil} | {:error, term()}

list_all_logout_deliveries()

@spec list_all_logout_deliveries() ::
  {:ok, [Lockspire.Domain.LogoutDelivery.t()]} | {:error, term()}

list_device_authorizations(opts \\ [])

list_initial_access_tokens(opts \\ [])

list_logout_deliveries(logout_event_id)

@spec list_logout_deliveries(integer()) ::
  {:ok, [Lockspire.Domain.LogoutDelivery.t()]} | {:error, term()}

mark_logout_delivery_enqueued(logout_delivery_id, oban_job_id)

@spec mark_logout_delivery_enqueued(integer(), integer()) ::
  {:ok, Lockspire.Domain.LogoutDelivery.t()} | {:error, term()}

prune_expired_records(schema, now \\ DateTime.utc_now(), count \\ 0)

@spec prune_expired_records(module(), DateTime.t(), non_neg_integer()) ::
  non_neg_integer()

Deletes expired records in chunks of 1000 to prevent table locking.

redeem_initial_access_token(token_hash, redeemed_at)

revoke_initial_access_token(id, revoked_at)

rotate_refresh_token(token_hash, client_id, rotated_at, refresh_token, access_token)

save_initial_access_token(iat)

transact_with_audit(audit_event, fun)

@spec transact_with_audit(Lockspire.Audit.Event.t() | map(), (-> term())) ::
  {:ok, term()} | {:error, term()}

validate_fapi_signing_readiness()

@spec validate_fapi_signing_readiness() ::
  :ok
  | {:error,
     :missing_compliant_active_key | :missing_compliant_publishable_key | term()}

validate_message_signing_readiness()

@spec validate_message_signing_readiness() ::
  :ok
  | {:error,
     :missing_compliant_active_key | :missing_compliant_publishable_key | term()}