defmodule ArcadiaCloud.Metering.MeteringConfig do use Ecto.Schema import Ecto.Changeset @primary_key {:id, :binary_id, autogenerate: true} @foreign_key_type :binary_id @granularities ~w(daily hourly) schema "metering_config" do field :resource_kind, :string field :granularity, :string, default: "daily" field :retention_days, :integer, default: 400 timestamps(type: :utc_datetime) end def changeset(config, attrs) do config |> cast(attrs, [:resource_kind, :granularity, :retention_days]) |> validate_required([:resource_kind, :granularity]) |> validate_inclusion(:granularity, @granularities) |> unique_constraint(:resource_kind) end end