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