-module(parrot@internal@cli). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/parrot/internal/cli.gleam"). -export([engine_from_env/1, parse_env/1]). -export_type([command/0, engine/0]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. ?MODULEDOC(false). -type command() :: usage | {generate, engine(), binary()}. -type engine() :: s_qlite | my_s_q_l | postgre_s_q_l. -file("src/parrot/internal/cli.gleam", 66). ?DOC(false). -spec engine_from_env(binary()) -> {ok, engine()} | {error, parrot@internal@errors:parrot_error()}. engine_from_env(Str) -> case Str of <<"postgres"/utf8, _/binary>> -> {ok, postgre_s_q_l}; <<"mysql"/utf8, _/binary>> -> {ok, my_s_q_l}; <<"file"/utf8>> -> {ok, s_qlite}; <<"sqlite"/utf8, _/binary>> -> {ok, s_qlite}; _ -> {error, {unknown_engine, Str}} end. -file("src/parrot/internal/cli.gleam", 77). ?DOC(false). -spec parse_env(binary()) -> {ok, {engine(), binary()}} | {error, binary()}. parse_env(Env) -> Env_var = envoy_ffi:get(Env), given:ok( Env_var, fun(_) -> {error, <<"Environment Variable \"DATABASE_URL\" is empty!"/utf8>>} end, fun(Env_var@1) -> Engine = engine_from_env(Env_var@1), given:ok( Engine, fun(_) -> {error, <<"\"DATABASE_URL\" does not match any of the supported formats (MySQL, PostgreSQL, SQlite)"/utf8>>} end, fun(Engine@1) -> {ok, {Engine@1, Env_var@1}} end ) end ).