25 lines
816 B
Julia
25 lines
816 B
Julia
|
module ResultsValidator
|
||
|
|
||
|
using SearchLight, SearchLight.Validation
|
||
|
|
||
|
function not_empty(field::Symbol, m::T, args::Vararg{Any})::ValidationResult where {T<:AbstractModel}
|
||
|
isempty(getfield(m, field)) && return ValidationResult(invalid, :not_empty, "should not be empty")
|
||
|
|
||
|
ValidationResult(valid)
|
||
|
end
|
||
|
|
||
|
function is_int(field::Symbol, m::T, args::Vararg{Any})::ValidationResult where {T<:AbstractModel}
|
||
|
isa(getfield(m, field), Int) || return ValidationResult(invalid, :is_int, "should be an int")
|
||
|
|
||
|
ValidationResult(valid)
|
||
|
end
|
||
|
|
||
|
function is_unique(field::Symbol, m::T, args::Vararg{Any})::ValidationResult where {T<:AbstractModel}
|
||
|
findone(typeof(m); NamedTuple(field => getfield(m, field))... ) === nothing ||
|
||
|
return ValidationResult(invalid, :is_unique, "already exists")
|
||
|
|
||
|
ValidationResult(valid)
|
||
|
end
|
||
|
|
||
|
end
|