Current section

Files

Jump to
nldoc_spec_validation lib nldoc spec validation finding.ex
Raw

lib/nldoc/spec/validation/finding.ex

defmodule NLdoc.Spec.Validation.Finding do
@moduledoc """
This module defines the Ecto schema for the NLdoc Validation spec Validation object.
"""
use NLdoc.SpecDef.Schema, type: "https://spec.validation.nldoc.nl/Resource/ValidationFinding"
import NLdoc.Ecto.Validator.URI, only: [validate_uri: 3]
typed_embedded_schema null: false do
field :type, :string, default: @resource_type
field :resource_id, Ecto.UUID
field :severity, Ecto.Enum, values: [:error, :warning, :notice]
field :rule, :string
field :ruleset, :string
field :ruleset_version, :string
end
def changeset(object, attrs) do
fields = [:type, :resource_id, :severity, :rule, :ruleset, :ruleset_version]
object
|> cast(attrs, fields, @cast_opts)
|> validate_required(fields)
|> validate_inclusion(:type, [@resource_type])
|> validate_uri(:ruleset, schemes: ["http", "https"])
end
end