lib/schemas/flags.ex

defmodule Flagsmith.Schemas.Flags do
  use TypedEctoSchema

  alias Flagsmith.Configuration

  @moduledoc """
  Ecto schema representing a Flagsmith Flags structure, containing a map of ids to
  flags, and a client configuration field.
  """

  @primary_key false
  typed_embedded_schema do
    field(:flags, :map, default: %{})
    field(:__configuration__, :map)
  end

  @doc false
  @spec new(flags_map :: map(), config :: Configuration.t()) :: __MODULE__.t()
  def new(flags_map, %Configuration{} = config),
    do: %__MODULE__{flags: flags_map, __configuration__: config}
end