Current section
Files
Jump to
Current section
Files
lib/store/schemas/study.ex
defmodule Scout.Store.Schemas.Study do
@moduledoc """
Ecto schema for studies in PostgreSQL storage.
"""
use Ecto.Schema
import Ecto.Changeset
@primary_key {:id, :string, autogenerate: false}
@timestamps_opts [type: :utc_datetime]
schema "studies" do
field :goal, Ecto.Enum, values: [:minimize, :maximize]
field :status, Ecto.Enum, values: [:pending, :running, :completed, :failed, :cancelled], default: :running
field :search_space, :map
field :metadata, :map, default: %{}
field :max_trials, :integer
has_many :trials, Scout.Store.Schemas.Trial
has_many :observations, Scout.Store.Schemas.Observation
timestamps()
end
@doc false
def changeset(study, attrs) do
study
|> cast(attrs, [:id, :goal, :status, :search_space, :metadata, :max_trials])
|> validate_required([:id, :goal, :status])
|> unique_constraint(:id)
end
end