defmodule StepFlow.WorkflowDefinitions.WorkflowDefinition do
@moduledoc """
The WorkflowDefinition context.
"""
use Ecto.Schema
import Ecto.Changeset
require Logger
alias StepFlow.WorkflowDefinitions.WorkflowDefinition
schema "step_flow_workflow_definition" do
field(:schema_version, :string)
field(:identifier, :string)
field(:label, :string, default: "")
field(:icon, :string, default: "")
field(:version_major, :integer)
field(:version_minor, :integer)
field(:version_micro, :integer)
field(:tags, {:array, :string}, default: [])
field(:is_live, :boolean, default: false)
field(:deleted, :boolean, default: false)
field(:notification_hooks, {:array, :map})
field(:steps, {:array, :map}, default: [])
field(:start_parameters, {:array, :map}, default: [])
field(:parameters, {:array, :map}, default: [])
timestamps()
end
@doc false
def changeset(%WorkflowDefinition{} = workflow_definition, attrs) do
workflow_definition
|> cast(attrs, [
:schema_version,
:identifier,
:label,
:icon,
:version_major,
:version_minor,
:version_micro,
:tags,
:is_live,
:deleted,
:notification_hooks,
:steps,
:start_parameters,
:parameters
])
|> validate_required([
:schema_version,
:identifier,
:version_major,
:version_minor,
:version_micro
])
|> unique_constraint(
:identifier,
name: :workflow_identifier_index
)
end
end