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