-module(testcontainer@formula). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/testcontainer/formula.gleam"). -export([new/2, new_standalone/2, spec/1, extract/2, standalone_acquire/1, standalone_release/1]). -export_type([formula/1, standalone_formula/2]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. -opaque formula(FRQ) :: {formula, testcontainer@container:container_spec(), fun((testcontainer@container:container()) -> {ok, FRQ} | {error, testcontainer@error:error()})}. -opaque standalone_formula(FRR, FRS) :: {standalone_formula, fun(() -> {ok, FRR} | {error, FRS}), fun(() -> {ok, nil} | {error, FRS})}. -file("src/testcontainer/formula.gleam", 44). ?DOC( " Create a Formula from a ContainerSpec and an extraction function.\n" " Called by formula modules (e.g. `testcontainer_formulas/postgres`).\n" ). -spec new( testcontainer@container:container_spec(), fun((testcontainer@container:container()) -> {ok, FRT} | {error, testcontainer@error:error()}) ) -> formula(FRT). new(Spec, Extract) -> {formula, Spec, Extract}. -file("src/testcontainer/formula.gleam", 54). ?DOC( " Create a StandaloneFormula from acquire and release functions.\n" " `acquire` is called once to obtain the resource; `release` is always\n" " called after the body finishes, even on error.\n" ). -spec new_standalone( fun(() -> {ok, FRX} | {error, FRY}), fun(() -> {ok, nil} | {error, FRY}) ) -> standalone_formula(FRX, FRY). new_standalone(Acquire, Release) -> {standalone_formula, Acquire, Release}. -file("src/testcontainer/formula.gleam", 66). ?DOC(false). -spec spec(formula(any())) -> testcontainer@container:container_spec(). spec(F) -> erlang:element(2, F). -file("src/testcontainer/formula.gleam", 71). ?DOC(false). -spec extract(formula(FSH), testcontainer@container:container()) -> {ok, FSH} | {error, testcontainer@error:error()}. extract(F, C) -> (erlang:element(3, F))(C). -file("src/testcontainer/formula.gleam", 79). ?DOC(false). -spec standalone_acquire(standalone_formula(FSL, FSM)) -> {ok, FSL} | {error, FSM}. standalone_acquire(F) -> (erlang:element(2, F))(). -file("src/testcontainer/formula.gleam", 86). ?DOC(false). -spec standalone_release(standalone_formula(any(), FSS)) -> {ok, nil} | {error, FSS}. standalone_release(F) -> (erlang:element(3, F))().