Chronicle.Artifacts (cratis_chronicle v3.16.1)

Copy Markdown View Source

Discovers Chronicle artifacts in an OTP application.

Discovery is based on the introspection functions generated by Chronicle macros:

  • __chronicle_event_type__/1
  • __chronicle_event_source__/1
  • __chronicle_reactor__/1
  • __chronicle_reducer__/1
  • __chronicle_read_model__/1
  • __chronicle_webhook__/1
  • __chronicle_event_store_subscription__/1
  • __chronicle_migration__/1
  • __chronicle_global_handler__/1
  • __chronicle_constraint__/1

The returned map can be fed directly into Chronicle.Client options.

Summary

Functions

Discovers Chronicle artifacts from modules belonging to an OTP app.

Discovers Chronicle artifacts from all currently loaded modules.

Builds a Chronicle.Discovery.Report from the artifacts discovered in an OTP application.

Types

discovered()

@type discovered() :: %{
  event_types: [module()],
  event_sources: [module()],
  reactors: [module()],
  reducers: [module()],
  read_models: [module()],
  projections: [module()],
  seeders: [module()],
  webhooks: [module()],
  event_store_subscriptions: [module()],
  captures: [module()],
  migrations: [module()],
  global_handlers: [module()],
  constraints: [module()]
}

Functions

discover(otp_app)

@spec discover(atom()) :: discovered()

Discovers Chronicle artifacts from modules belonging to an OTP app.

Returns empty lists if the app has no module list available.

discover_loaded()

@spec discover_loaded() :: discovered()

Discovers Chronicle artifacts from all currently loaded modules.

Useful as a zero-configuration default in early adoption scenarios.

report(otp_app, opts \\ [])

@spec report(atom(), keyword()) :: Chronicle.Discovery.Report.t()

Builds a Chronicle.Discovery.Report from the artifacts discovered in an OTP application.

Additive alongside discover/1, which keeps returning its plain map unchanged so existing callers are unaffected. opts accepts :warn_defaulted_ids (default true); see Chronicle.Discovery.Report.build/1.