Current section
Files
Jump to
Current section
Files
src/parrot@internal@cli.erl
-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]).
-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, parrot@internal@sqlc:engine(), binary()}.
-file("src/parrot/internal/cli.gleam", 61).
?DOC(false).
-spec engine_from_env(binary()) -> {ok, parrot@internal@sqlc: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_q_lite};
<<"sqlite"/utf8, _/binary>> ->
{ok, s_q_lite};
_ ->
{error, {unknown_engine, Str}}
end.
-file("src/parrot/internal/cli.gleam", 70).
?DOC(false).
-spec parse_env(binary()) -> {ok, {parrot@internal@sqlc:engine(), binary()}} |
{error, binary()}.
parse_env(Env) ->
Env_result = envoy_ffi:get(Env),
gleam@result:'try'(
gleam@result:replace_error(
Env_result,
<<<<"Environment Variable \""/utf8, Env/binary>>/binary,
"\" is empty!"/utf8>>
),
fun(Env_var) ->
Engine_result = engine_from_env(Env_var),
gleam@result:'try'(
gleam@result:replace_error(
Engine_result,
<<<<"\""/utf8, Env/binary>>/binary,
"\" does not match any of the supported formats (MySQL, PostgreSQL, SQLite)"/utf8>>
),
fun(Engine) -> {ok, {Engine, Env_var}} end
)
end
).