Current section

Files

Jump to
sqlode src sqlode@writer.erl
Raw

src/sqlode@writer.erl

-module(sqlode@writer).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/sqlode/writer.gleam").
-export([write_all/1, error_to_string/1]).
-export_type([generated_file/0, write_error/0]).
-type generated_file() :: {generated_file, binary(), binary(), binary()}.
-type write_error() :: {directory_create_error, binary(), binary()} |
{file_write_error, binary(), binary()}.
-file("src/sqlode/writer.gleam", 15).
-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/writer.gleam", 41).
-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.