Current section
Files
Jump to
Current section
Files
src/ormlette@changesets@changesets.erl
-module(ormlette@changesets@changesets).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([new/2, is_valid/1, errors/1, validate_min/3, validate_max/3, validate_min_length/3, validate_positive/2, validate_negative/2, validate_number/2, validate_boolean/2, validate_regex/3, validate_in_list/3, validate_present/2]).
-export_type([error/0, changeset/0]).
-type error() :: {field_error, binary(), binary()}.
-type changeset() :: {changeset,
binary(),
gleam@dict:dict(binary(), gleam@dynamic:dynamic_()),
list(error()),
boolean()}.
-file("/Users/ashercohen/Desktop/gleam/ormlette/src/ormlette/changesets/changesets.gleam", 27).
-spec new(binary(), gleam@dict:dict(binary(), gleam@dynamic:dynamic_())) -> changeset().
new(Table, Data) ->
{changeset, Table, Data, [], true}.
-file("/Users/ashercohen/Desktop/gleam/ormlette/src/ormlette/changesets/changesets.gleam", 146).
-spec is_valid(changeset()) -> boolean().
is_valid(Changeset) ->
erlang:element(5, Changeset).
-file("/Users/ashercohen/Desktop/gleam/ormlette/src/ormlette/changesets/changesets.gleam", 151).
-spec errors(changeset()) -> list(error()).
errors(Changeset) ->
erlang:element(4, Changeset).
-file("/Users/ashercohen/Desktop/gleam/ormlette/src/ormlette/changesets/changesets.gleam", 156).
-spec format_errors(list(binary()), list(binary())) -> list(error()).
format_errors(Fields, Messages) ->
gleam@list:map(
Messages,
fun(Msg) ->
{field_error,
gleam@result:unwrap(gleam@list:first(Fields), <<""/utf8>>),
Msg}
end
).
-file("/Users/ashercohen/Desktop/gleam/ormlette/src/ormlette/changesets/changesets.gleam", 96).
-spec validate_field(
changeset(),
binary(),
ormlette_validate@valid:validator(gleam@dynamic:dynamic_())
) -> changeset().
validate_field(Changeset, Field, Validator) ->
{changeset, Table, Data, Errors, Valid} = Changeset,
Field_validator = {field_validator, Field, Validator},
case ormlette_validate@valid:validate_dict(Data, [Field_validator]) of
{ok, _} ->
Changeset;
{error, New_errors} ->
{changeset,
Table,
Data,
lists:append(Errors, format_errors([Field], New_errors)),
false}
end.
-file("/Users/ashercohen/Desktop/gleam/ormlette/src/ormlette/changesets/changesets.gleam", 32).
-spec validate_min(changeset(), binary(), integer()) -> changeset().
validate_min(Changeset, Field, Min) ->
validate_field(Changeset, Field, ormlette_validate@valid:min(Min)).
-file("/Users/ashercohen/Desktop/gleam/ormlette/src/ormlette/changesets/changesets.gleam", 37).
-spec validate_max(changeset(), binary(), integer()) -> changeset().
validate_max(Changeset, Field, Max) ->
validate_field(Changeset, Field, ormlette_validate@valid:max(Max)).
-file("/Users/ashercohen/Desktop/gleam/ormlette/src/ormlette/changesets/changesets.gleam", 49).
-spec validate_min_length(changeset(), binary(), integer()) -> changeset().
validate_min_length(Changeset, Field, Min_length) ->
validate_field(
Changeset,
Field,
ormlette_validate@valid:has_min_length(Min_length)
).
-file("/Users/ashercohen/Desktop/gleam/ormlette/src/ormlette/changesets/changesets.gleam", 58).
-spec validate_positive(changeset(), binary()) -> changeset().
validate_positive(Changeset, Field) ->
validate_field(Changeset, Field, ormlette_validate@valid:is_positive()).
-file("/Users/ashercohen/Desktop/gleam/ormlette/src/ormlette/changesets/changesets.gleam", 63).
-spec validate_negative(changeset(), binary()) -> changeset().
validate_negative(Changeset, Field) ->
validate_field(Changeset, Field, ormlette_validate@valid:is_negative()).
-file("/Users/ashercohen/Desktop/gleam/ormlette/src/ormlette/changesets/changesets.gleam", 68).
-spec validate_number(changeset(), binary()) -> changeset().
validate_number(Changeset, Field) ->
validate_field(Changeset, Field, ormlette_validate@valid:is_number()).
-file("/Users/ashercohen/Desktop/gleam/ormlette/src/ormlette/changesets/changesets.gleam", 73).
-spec validate_boolean(changeset(), binary()) -> changeset().
validate_boolean(Changeset, Field) ->
validate_field(Changeset, Field, ormlette_validate@valid:is_boolean()).
-file("/Users/ashercohen/Desktop/gleam/ormlette/src/ormlette/changesets/changesets.gleam", 78).
-spec validate_regex(changeset(), binary(), binary()) -> changeset().
validate_regex(Changeset, Field, Pattern) ->
validate_field(
Changeset,
Field,
ormlette_validate@valid:matches_regex(Pattern)
).
-file("/Users/ashercohen/Desktop/gleam/ormlette/src/ormlette/changesets/changesets.gleam", 87).
-spec validate_in_list(changeset(), binary(), list(gleam@dynamic:dynamic_())) -> changeset().
validate_in_list(Changeset, Field, Allowed_values) ->
validate_field(
Changeset,
Field,
ormlette_validate@valid:is_in_list(Allowed_values)
).
-file("/Users/ashercohen/Desktop/gleam/ormlette/src/ormlette/changesets/changesets.gleam", 117).
-spec validate_fields(
changeset(),
list(ormlette_validate@valid:field_validator())
) -> changeset().
validate_fields(Changeset, Field_validators) ->
{changeset, Table, Data, Errors, Valid} = Changeset,
case ormlette_validate@valid:validate_dict(Data, Field_validators) of
{ok, _} ->
Changeset;
{error, New_errors} ->
{changeset,
Table,
Data,
lists:append(
Errors,
format_errors(
gleam@list:map(Field_validators, fun(Fv) -> case Fv of
{field_validator, Field, _} ->
Field
end end),
New_errors
)
),
false}
end.
-file("/Users/ashercohen/Desktop/gleam/ormlette/src/ormlette/changesets/changesets.gleam", 42).
-spec validate_present(changeset(), list(binary())) -> changeset().
validate_present(Changeset, Fields) ->
Field_validators = gleam@list:map(
Fields,
fun(Field) ->
{field_validator, Field, ormlette_validate@valid:is_not_empty()}
end
),
validate_fields(Changeset, Field_validators).