Current section
Files
Jump to
Current section
Files
src/sqlode@internal@writer.erl
-module(sqlode@internal@writer).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/sqlode/internal/writer.gleam").
-export([write_all/1, error_to_string/1]).
-export_type([generated_file/0, write_error/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 generated_file() :: {generated_file, binary(), binary(), binary()}.
-type write_error() :: {directory_create_error, binary(), binary()} |
{file_write_error, binary(), binary()}.
-file("src/sqlode/internal/writer.gleam", 15).
?DOC(false).
-spec write_all(list(generated_file())) -> {ok, list(binary())} |
{error, write_error()}.
write_all(Files) ->
_pipe@2 = gleam@list:try_fold(
Files,
[],
fun(Written, File) ->
gleam@result:'try'(
begin
_pipe = simplifile:create_directory_all(
erlang:element(2, File)
),
gleam@result:map_error(
_pipe,
fun(_) ->
{directory_create_error,
erlang:element(2, File),
<<"Failed to create directory"/utf8>>}
end
)
end,
fun(_) ->
Full_path = filepath:join(
erlang:element(2, File),
erlang:element(3, File)
),
gleam@result:'try'(
begin
_pipe@1 = simplifile:write(
Full_path,
erlang:element(4, File)
),
gleam@result:map_error(
_pipe@1,
fun(_) ->
{file_write_error,
Full_path,
<<"Failed to write file"/utf8>>}
end
)
end,
fun(_) -> {ok, [Full_path | Written]} end
)
end
)
end
),
gleam@result:map(_pipe@2, fun lists:reverse/1).
-file("src/sqlode/internal/writer.gleam", 41).
?DOC(false).
-spec error_to_string(write_error()) -> binary().
error_to_string(Error) ->
case Error of
{directory_create_error, Path, Detail} ->
<<<<<<"Failed to create directory "/utf8, Path/binary>>/binary,
": "/utf8>>/binary,
Detail/binary>>;
{file_write_error, Path@1, Detail@1} ->
<<<<<<"Failed to write file "/utf8, Path@1/binary>>/binary,
": "/utf8>>/binary,
Detail@1/binary>>
end.