lib/fretex/shipping/carrier_service.ex

defmodule Fretex.Shipping.CarrierService do
  use Ecto.Schema
  import Ecto.Changeset

  @primary_key {:code, :binary_id, autogenerate: false}
  embedded_schema do
    field(:enabled, :boolean, default: false)
    field(:description, :string)
    field(:name, :string)
    field(:custom_name, :string)
    field(:deprecated, :boolean, virtual: true, default: false)
  end

  @doc false
  def changeset(correios, attrs) do
    correios
    |> cast(attrs, [:enabled, :code, :name, :custom_name, :description, :deprecated])
    |> validate_required([:enabled, :code, :name])
  end

  def new(attrs) do
    %__MODULE__{}
    |> changeset(attrs)
    |> apply_action(:validate)
  end
end