Tags

Tags give the ability to mark specific points in history as being important
  • 1.0.1

    1.0.1
    
    - `[T]` GitLab CI/CD prepared
    - `[T]` Publishing to hex.pm prepared
    - `[T]` LICENSE Added
  • 1.0.0

    1.0.0
    
    - `[C]` Logger messages improved
    - `[+]` Use case pipeline: `create/1`, `async/1`, `timeout/2`, `callback/2`, `reply/2`, `input/2`, `run/1`/`run/2`
    - `[+]` Module-based use cases: any module exporting `exec/1` is a valid use case
    - `[+]` Function-based use cases: `fn` closures and `&Module.function/1` captures work directly
    - `[+]` Every pipeline function accepts a module or function directly — `create/1` is optional and the pipeline can start at any step
    - `[+]` Asynchronous execution via `async/1` (fire and forget; default is synchronous)
    - `[+]` Timeout via `timeout/2`: kills the underlying task when the deadline is exceeded and sets `timedout_at` on the result struct
    - `[+]` Result delivery to processes via `reply/2`; validated that all targets are actual PIDs
    - `[+]` Result delivery via functions with `callback/2`; callbacks fire asynchronously even for synchronous use cases
    - `[+]` Lifecycle tracking via `started_at`, `finished_at`, and `timedout_at` timestamps on the result struct
    - `[+]` Exception capture: exceptions raised by the use case are stored in `error` and `stacktrace`; the caller never crashes
    - `[+]` Already-started guard: every pipeline function raises `ArgumentError` if called on a struct whose `started_at` is set
    - `[+]` Automatic supervision tree — no manual setup required in the application supervisor
    - `[C]` Use case callback named `exec/1` (not `run/1`) to avoid collision with `Interact.UseCase.run/1`
    - `[+]` Starting point is the `UseCase` module presented on January 2025 at the Elixir Madrid Meetup by Ángel Herranz.