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