Current section
Files
Jump to
Current section
Files
src/shelf.erl
-module(shelf).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/shelf.gleam").
-export([config/2, write_mode/2]).
-export_type([shelf_error/0, write_mode/0, config/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.
-type shelf_error() :: not_found |
key_already_present |
table_closed |
{file_error, binary()} |
name_conflict |
file_size_limit_exceeded |
{erlang_error, binary()}.
-type write_mode() :: write_back | write_through.
-type config() :: {config, binary(), binary(), write_mode()}.
-file("src/shelf.gleam", 89).
?DOC(
" Create a config with the default write mode (WriteBack).\n"
"\n"
" ```gleam\n"
" let conf = shelf.config(name: \"users\", path: \"data/users.dets\")\n"
" ```\n"
).
-spec config(binary(), binary()) -> config().
config(Name, Path) ->
{config, Name, Path, write_back}.
-file("src/shelf.gleam", 101).
?DOC(
" Set the write mode on a config.\n"
"\n"
" ```gleam\n"
" let conf =\n"
" shelf.config(name: \"users\", path: \"data/users.dets\")\n"
" |> shelf.write_mode(shelf.WriteThrough)\n"
" ```\n"
).
-spec write_mode(config(), write_mode()) -> config().
write_mode(Config, Mode) ->
{config, erlang:element(2, Config), erlang:element(3, Config), Mode}.