-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.