-module(dagger@dsl@engine). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/dagger/dsl/engine.gleam"). -export([none/1, opt_key/2, opt_use_default_policy/2, opt_max_used_space/2, opt_reserved_space/2, opt_min_free_space/2, opt_target_space/2, engine/0, clients/3, engine_id/1, local_cache/1, name/3, engine_cache/1, entry_set/2, cache_id/1, max_used_space/3, min_free_space/3, prune/4, reserved_space/3, target_space/3, engine_cache_entry_set/1, disk_space_bytes/3, entries/4, entry_count/3, cache_entry_set_id/1]). -export_type([for_prune/0, for_entry_set/0, opts/1]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. -type for_prune() :: any(). -type for_entry_set() :: any(). -opaque opts(SQS) :: {opts, gleam@option:option(binary()), gleam@option:option(boolean()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary())} | {gleam_phantom, SQS}. -file("src/dagger/dsl/engine.gleam", 24). -spec defaults() -> opts(any()). defaults() -> {opts, none, none, none, none, none, none}. -file("src/dagger/dsl/engine.gleam", 35). -spec none(opts(SQV)) -> opts(SQV). none(Opts) -> Opts. -file("src/dagger/dsl/engine.gleam", 39). -spec opt_key(opts(for_entry_set()), binary()) -> opts(for_entry_set()). opt_key(Opts, Val) -> {opts, {some, Val}, erlang:element(3, Opts), erlang:element(4, Opts), erlang:element(5, Opts), erlang:element(6, Opts), erlang:element(7, Opts)}. -file("src/dagger/dsl/engine.gleam", 43). -spec opt_use_default_policy(opts(for_prune()), boolean()) -> opts(for_prune()). opt_use_default_policy(Opts, Val) -> {opts, erlang:element(2, Opts), {some, Val}, erlang:element(4, Opts), erlang:element(5, Opts), erlang:element(6, Opts), erlang:element(7, Opts)}. -file("src/dagger/dsl/engine.gleam", 47). -spec opt_max_used_space(opts(for_prune()), binary()) -> opts(for_prune()). opt_max_used_space(Opts, Val) -> {opts, erlang:element(2, Opts), erlang:element(3, Opts), {some, Val}, erlang:element(5, Opts), erlang:element(6, Opts), erlang:element(7, Opts)}. -file("src/dagger/dsl/engine.gleam", 51). -spec opt_reserved_space(opts(for_prune()), binary()) -> opts(for_prune()). opt_reserved_space(Opts, Val) -> {opts, erlang:element(2, Opts), erlang:element(3, Opts), erlang:element(4, Opts), {some, Val}, erlang:element(6, Opts), erlang:element(7, Opts)}. -file("src/dagger/dsl/engine.gleam", 55). -spec opt_min_free_space(opts(for_prune()), binary()) -> opts(for_prune()). opt_min_free_space(Opts, Val) -> {opts, erlang:element(2, Opts), erlang:element(3, Opts), erlang:element(4, Opts), erlang:element(5, Opts), {some, Val}, erlang:element(7, Opts)}. -file("src/dagger/dsl/engine.gleam", 59). -spec opt_target_space(opts(for_prune()), binary()) -> opts(for_prune()). opt_target_space(Opts, Val) -> {opts, erlang:element(2, Opts), erlang:element(3, Opts), erlang:element(4, Opts), erlang:element(5, Opts), erlang:element(6, Opts), {some, Val}}. -file("src/dagger/dsl/engine.gleam", 63). -spec engine() -> dagger@dsl@types:engine(). engine() -> Field = {field, <<"engine"/utf8>>, [], []}, {engine, {pure, [Field]}}. -file("src/dagger/dsl/engine.gleam", 69). ?DOC(" The list of connected client IDs\n"). -spec clients( dagger@dsl@types:engine(), dagger@types:client(), fun(({ok, list(binary())} | {error, dagger@types:query_error()}) -> SRM) ) -> SRM. clients(Parent, Client, Handler) -> Field = {field, <<"clients"/utf8>>, [], []}, Op = begin dagger@types:bind( erlang:element(2, Parent), fun(Q) -> Full_query = lists:append(Q, [Field]), {fetch, Full_query, {decoder, fun gleam@dynamic@decode:decode_dynamic/1}, fun(Dyn) -> Path = dagger@types:make_path(Full_query), case gleam@dynamic@decode:run( Dyn, gleam@dynamic@decode:at( Path, gleam@dynamic@decode:list( {decoder, fun gleam@dynamic@decode:decode_string/1} ) ) ) of {ok, Val} -> {pure, {ok, Val}}; {error, _} -> {pure, {error, {decoding_error, <<"clients"/utf8>>}}} end end} end ) end, Handler(dagger@interpreter:run(Op, Client)). -file("src/dagger/dsl/engine.gleam", 90). ?DOC(" A unique identifier for this Engine.\n"). -spec engine_id(dagger@dsl@types:engine()) -> dagger@dsl@types:engine(). engine_id(Parent) -> Field = {field, <<"id"/utf8>>, [], []}, New_op = begin dagger@types:bind( erlang:element(2, Parent), fun(Q) -> {pure, lists:append(Q, [Field])} end ) end, {engine, New_op}. -file("src/dagger/dsl/engine.gleam", 100). ?DOC(" The local (on-disk) cache for the Dagger engine\n"). -spec local_cache(dagger@dsl@types:engine()) -> dagger@dsl@types:engine_cache(). local_cache(Parent) -> Field = {field, <<"localCache"/utf8>>, [], []}, New_op = begin dagger@types:bind( erlang:element(2, Parent), fun(Q) -> {pure, lists:append(Q, [Field])} end ) end, {engine_cache, New_op}. -file("src/dagger/dsl/engine.gleam", 110). ?DOC(" The name of the engine instance.\n"). -spec name( dagger@dsl@types:engine(), dagger@types:client(), fun(({ok, binary()} | {error, dagger@types:query_error()}) -> SRO) ) -> SRO. name(Parent, Client, Handler) -> Field = {field, <<"name"/utf8>>, [], []}, Op = begin dagger@types:bind( erlang:element(2, Parent), fun(Q) -> Full_query = lists:append(Q, [Field]), {fetch, Full_query, {decoder, fun gleam@dynamic@decode:decode_dynamic/1}, fun(Dyn) -> Path = dagger@types:make_path(Full_query), case gleam@dynamic@decode:run( Dyn, gleam@dynamic@decode:at( Path, {decoder, fun gleam@dynamic@decode:decode_string/1} ) ) of {ok, Val} -> {pure, {ok, Val}}; {error, _} -> {pure, {error, {decoding_error, <<"name"/utf8>>}}} end end} end ) end, Handler(dagger@interpreter:run(Op, Client)). -file("src/dagger/dsl/engine.gleam", 130). -spec engine_cache(dagger@dsl@types:engine_cache()) -> dagger@dsl@types:engine_cache(). engine_cache(Id) -> Field = {field, <<"loadEngineCacheFromID"/utf8>>, [{<<"id"/utf8>>, {g_deferred, erlang:element(2, Id)}}], []}, {engine_cache, {pure, [Field]}}. -file("src/dagger/dsl/engine.gleam", 135). -spec encode_entry_set(opts(any())) -> list({binary(), dagger@types:value()}). encode_entry_set(Opts) -> gleam@list:filter_map([case erlang:element(2, Opts) of {some, Val} -> {ok, {<<"key"/utf8>>, {g_string, Val}}}; none -> {error, nil} end], fun(X) -> X end). -file("src/dagger/dsl/engine.gleam", 145). ?DOC(" The current set of entries in the cache\n"). -spec entry_set( dagger@dsl@types:engine_cache(), fun((opts(for_entry_set())) -> opts(for_entry_set())) ) -> dagger@dsl@types:engine_cache_entry_set(). entry_set(Parent, With_fn) -> Opts = With_fn(defaults()), Field = {field, <<"entrySet"/utf8>>, encode_entry_set(Opts), []}, New_op = begin dagger@types:bind( erlang:element(2, Parent), fun(Q) -> {pure, lists:append(Q, [Field])} end ) end, {engine_cache_entry_set, New_op}. -file("src/dagger/dsl/engine.gleam", 156). ?DOC(" A unique identifier for this EngineCache.\n"). -spec cache_id(dagger@dsl@types:engine_cache()) -> dagger@dsl@types:engine_cache(). cache_id(Parent) -> Field = {field, <<"id"/utf8>>, [], []}, New_op = begin dagger@types:bind( erlang:element(2, Parent), fun(Q) -> {pure, lists:append(Q, [Field])} end ) end, {engine_cache, New_op}. -file("src/dagger/dsl/engine.gleam", 166). ?DOC(" The maximum bytes to keep in the cache without pruning.\n"). -spec max_used_space( dagger@dsl@types:engine_cache(), dagger@types:client(), fun(({ok, integer()} | {error, dagger@types:query_error()}) -> SRV) ) -> SRV. max_used_space(Parent, Client, Handler) -> Field = {field, <<"maxUsedSpace"/utf8>>, [], []}, Op = begin dagger@types:bind( erlang:element(2, Parent), fun(Q) -> Full_query = lists:append(Q, [Field]), {fetch, Full_query, {decoder, fun gleam@dynamic@decode:decode_dynamic/1}, fun(Dyn) -> Path = dagger@types:make_path(Full_query), case gleam@dynamic@decode:run( Dyn, gleam@dynamic@decode:at( Path, {decoder, fun gleam@dynamic@decode:decode_int/1} ) ) of {ok, Val} -> {pure, {ok, Val}}; {error, _} -> {pure, {error, {decoding_error, <<"maxUsedSpace"/utf8>>}}} end end} end ) end, Handler(dagger@interpreter:run(Op, Client)). -file("src/dagger/dsl/engine.gleam", 187). ?DOC(" The target amount of free disk space the garbage collector will attempt to leave.\n"). -spec min_free_space( dagger@dsl@types:engine_cache(), dagger@types:client(), fun(({ok, integer()} | {error, dagger@types:query_error()}) -> SRX) ) -> SRX. min_free_space(Parent, Client, Handler) -> Field = {field, <<"minFreeSpace"/utf8>>, [], []}, Op = begin dagger@types:bind( erlang:element(2, Parent), fun(Q) -> Full_query = lists:append(Q, [Field]), {fetch, Full_query, {decoder, fun gleam@dynamic@decode:decode_dynamic/1}, fun(Dyn) -> Path = dagger@types:make_path(Full_query), case gleam@dynamic@decode:run( Dyn, gleam@dynamic@decode:at( Path, {decoder, fun gleam@dynamic@decode:decode_int/1} ) ) of {ok, Val} -> {pure, {ok, Val}}; {error, _} -> {pure, {error, {decoding_error, <<"minFreeSpace"/utf8>>}}} end end} end ) end, Handler(dagger@interpreter:run(Op, Client)). -file("src/dagger/dsl/engine.gleam", 207). -spec encode_prune(opts(any())) -> list({binary(), dagger@types:value()}). encode_prune(Opts) -> gleam@list:filter_map([case erlang:element(3, Opts) of {some, Val} -> {ok, {<<"useDefaultPolicy"/utf8>>, {g_bool, Val}}}; none -> {error, nil} end, case erlang:element(4, Opts) of {some, Val@1} -> {ok, {<<"maxUsedSpace"/utf8>>, {g_string, Val@1}}}; none -> {error, nil} end, case erlang:element(5, Opts) of {some, Val@2} -> {ok, {<<"reservedSpace"/utf8>>, {g_string, Val@2}}}; none -> {error, nil} end, case erlang:element(6, Opts) of {some, Val@3} -> {ok, {<<"minFreeSpace"/utf8>>, {g_string, Val@3}}}; none -> {error, nil} end, case erlang:element(7, Opts) of {some, Val@4} -> {ok, {<<"targetSpace"/utf8>>, {g_string, Val@4}}}; none -> {error, nil} end], fun(X) -> X end). -file("src/dagger/dsl/engine.gleam", 233). ?DOC(" Prune the cache of releaseable entries\n"). -spec prune( dagger@dsl@types:engine_cache(), fun((opts(for_prune())) -> opts(for_prune())), dagger@types:client(), fun(({ok, nil} | {error, dagger@types:query_error()}) -> SSE) ) -> SSE. prune(Parent, With_fn, Client, Handler) -> Opts = With_fn(defaults()), Field = {field, <<"prune"/utf8>>, encode_prune(Opts), []}, Op = begin dagger@types:bind( erlang:element(2, Parent), fun(Q) -> Full_query = lists:append(Q, [Field]), {fetch, Full_query, {decoder, fun gleam@dynamic@decode:decode_dynamic/1}, fun(Dyn) -> Path = dagger@types:make_path(Full_query), case gleam@dynamic@decode:run( Dyn, gleam@dynamic@decode:at( Path, {decoder, fun gleam@dynamic@decode:decode_dynamic/1} ) ) of {ok, _} -> {pure, {ok, nil}}; {error, _} -> {pure, {error, {decoding_error, <<"prune"/utf8>>}}} end end} end ) end, Handler(dagger@interpreter:run(Op, Client)). -file("src/dagger/dsl/engine.gleam", 255). ?DOC(" The minimum amount of disk space this policy is guaranteed to retain.\n"). -spec reserved_space( dagger@dsl@types:engine_cache(), dagger@types:client(), fun(({ok, integer()} | {error, dagger@types:query_error()}) -> SSG) ) -> SSG. reserved_space(Parent, Client, Handler) -> Field = {field, <<"reservedSpace"/utf8>>, [], []}, Op = begin dagger@types:bind( erlang:element(2, Parent), fun(Q) -> Full_query = lists:append(Q, [Field]), {fetch, Full_query, {decoder, fun gleam@dynamic@decode:decode_dynamic/1}, fun(Dyn) -> Path = dagger@types:make_path(Full_query), case gleam@dynamic@decode:run( Dyn, gleam@dynamic@decode:at( Path, {decoder, fun gleam@dynamic@decode:decode_int/1} ) ) of {ok, Val} -> {pure, {ok, Val}}; {error, _} -> {pure, {error, {decoding_error, <<"reservedSpace"/utf8>>}}} end end} end ) end, Handler(dagger@interpreter:run(Op, Client)). -file("src/dagger/dsl/engine.gleam", 276). ?DOC(" The target number of bytes to keep when pruning.\n"). -spec target_space( dagger@dsl@types:engine_cache(), dagger@types:client(), fun(({ok, integer()} | {error, dagger@types:query_error()}) -> SSI) ) -> SSI. target_space(Parent, Client, Handler) -> Field = {field, <<"targetSpace"/utf8>>, [], []}, Op = begin dagger@types:bind( erlang:element(2, Parent), fun(Q) -> Full_query = lists:append(Q, [Field]), {fetch, Full_query, {decoder, fun gleam@dynamic@decode:decode_dynamic/1}, fun(Dyn) -> Path = dagger@types:make_path(Full_query), case gleam@dynamic@decode:run( Dyn, gleam@dynamic@decode:at( Path, {decoder, fun gleam@dynamic@decode:decode_int/1} ) ) of {ok, Val} -> {pure, {ok, Val}}; {error, _} -> {pure, {error, {decoding_error, <<"targetSpace"/utf8>>}}} end end} end ) end, Handler(dagger@interpreter:run(Op, Client)). -file("src/dagger/dsl/engine.gleam", 296). -spec engine_cache_entry_set(dagger@dsl@types:engine_cache_entry_set()) -> dagger@dsl@types:engine_cache_entry_set(). engine_cache_entry_set(Id) -> Field = {field, <<"loadEngineCacheEntrySetFromID"/utf8>>, [{<<"id"/utf8>>, {g_deferred, erlang:element(2, Id)}}], []}, {engine_cache_entry_set, {pure, [Field]}}. -file("src/dagger/dsl/engine.gleam", 302). ?DOC(" The total disk space used by the cache entries in this set.\n"). -spec disk_space_bytes( dagger@dsl@types:engine_cache_entry_set(), dagger@types:client(), fun(({ok, integer()} | {error, dagger@types:query_error()}) -> SSK) ) -> SSK. disk_space_bytes(Parent, Client, Handler) -> Field = {field, <<"diskSpaceBytes"/utf8>>, [], []}, Op = begin dagger@types:bind( erlang:element(2, Parent), fun(Q) -> Full_query = lists:append(Q, [Field]), {fetch, Full_query, {decoder, fun gleam@dynamic@decode:decode_dynamic/1}, fun(Dyn) -> Path = dagger@types:make_path(Full_query), case gleam@dynamic@decode:run( Dyn, gleam@dynamic@decode:at( Path, {decoder, fun gleam@dynamic@decode:decode_int/1} ) ) of {ok, Val} -> {pure, {ok, Val}}; {error, _} -> {pure, {error, {decoding_error, <<"diskSpaceBytes"/utf8>>}}} end end} end ) end, Handler(dagger@interpreter:run(Op, Client)). -file("src/dagger/dsl/engine.gleam", 323). ?DOC(" The list of individual cache entries in the set\n"). -spec entries( dagger@dsl@types:engine_cache_entry_set(), fun((dagger@dsl@types:engine_cache_entry()) -> list(dagger@types:field())), dagger@types:client(), fun(({ok, list(dagger@dsl@types:engine_cache_entry())} | {error, dagger@types:query_error()}) -> SSO) ) -> SSO. entries(Parent, Select, Client, Handler) -> Subfields = Select({engine_cache_entry, {pure, []}}), Field = {field, <<"entries"/utf8>>, [], Subfields}, Op = begin dagger@types:bind( erlang:element(2, Parent), fun(Q) -> Full_query = lists:append(Q, [Field]), {fetch, Full_query, {decoder, fun gleam@dynamic@decode:decode_dynamic/1}, fun(Dyn) -> Path = dagger@types:make_path(Full_query), case gleam@dynamic@decode:run( Dyn, gleam@dynamic@decode:at( Path, gleam@dynamic@decode:list( {decoder, fun gleam@dynamic@decode:decode_dynamic/1} ) ) ) of {ok, Items} -> {pure, {ok, gleam@list:map( Items, fun(_) -> {engine_cache_entry, {pure, Full_query}} end )}}; {error, _} -> {pure, {error, {decoding_error, <<"entries"/utf8>>}}} end end} end ) end, Handler(dagger@interpreter:run(Op, Client)). -file("src/dagger/dsl/engine.gleam", 345). ?DOC(" The number of cache entries in this set.\n"). -spec entry_count( dagger@dsl@types:engine_cache_entry_set(), dagger@types:client(), fun(({ok, integer()} | {error, dagger@types:query_error()}) -> SSQ) ) -> SSQ. entry_count(Parent, Client, Handler) -> Field = {field, <<"entryCount"/utf8>>, [], []}, Op = begin dagger@types:bind( erlang:element(2, Parent), fun(Q) -> Full_query = lists:append(Q, [Field]), {fetch, Full_query, {decoder, fun gleam@dynamic@decode:decode_dynamic/1}, fun(Dyn) -> Path = dagger@types:make_path(Full_query), case gleam@dynamic@decode:run( Dyn, gleam@dynamic@decode:at( Path, {decoder, fun gleam@dynamic@decode:decode_int/1} ) ) of {ok, Val} -> {pure, {ok, Val}}; {error, _} -> {pure, {error, {decoding_error, <<"entryCount"/utf8>>}}} end end} end ) end, Handler(dagger@interpreter:run(Op, Client)). -file("src/dagger/dsl/engine.gleam", 366). ?DOC(" A unique identifier for this EngineCacheEntrySet.\n"). -spec cache_entry_set_id(dagger@dsl@types:engine_cache_entry_set()) -> dagger@dsl@types:engine_cache_entry_set(). cache_entry_set_id(Parent) -> Field = {field, <<"id"/utf8>>, [], []}, New_op = begin dagger@types:bind( erlang:element(2, Parent), fun(Q) -> {pure, lists:append(Q, [Field])} end ) end, {engine_cache_entry_set, New_op}.