Current section
Files
Jump to
Current section
Files
lib/cyclium/migrations/v15.ex
defmodule Cyclium.Migrations.V15 do
@moduledoc """
V15: Interactive actors — conversations table, conversation_id on episodes
and workflow_instances, parent_episode_id on episodes, plan_preview step kind.
"""
use Ecto.Migration
def up do
create table(:cyclium_conversations, primary_key: false) do
add(:id, :binary_id, primary_key: true)
add(:name, :string, null: false)
add(:status, :string, null: false, default: "open")
add(:actor_id, :string)
add(:goal, :string)
add(:origin, :string)
add(:audience_target, :string)
add(:result, :string)
add(:resolved_outcome, :string)
add(:principal, :string)
add(:principal_id, :string, size: 255)
add(:collected_fields, :string)
add(:turns_used, :integer, default: 0)
add(:tokens_used, :integer, default: 0)
add(:inserted_at, :utc_datetime, null: false)
add(:updated_at, :utc_datetime, null: false)
end
create(index(:cyclium_conversations, [:status]))
create(index(:cyclium_conversations, [:principal_id]))
create(index(:cyclium_conversations, [:actor_id, :status]))
alter table(:cyclium_episodes) do
add(
:conversation_id,
references(:cyclium_conversations, type: :binary_id, on_delete: :nilify_all),
null: true
)
add(:parent_episode_id, :string, null: true)
end
create(index(:cyclium_episodes, [:conversation_id]))
create(index(:cyclium_episodes, [:parent_episode_id]))
alter table(:cyclium_workflow_instances) do
add(
:conversation_id,
references(:cyclium_conversations, type: :binary_id, on_delete: :nilify_all),
null: true
)
end
create(index(:cyclium_workflow_instances, [:conversation_id]))
end
def down do
drop_if_exists(index(:cyclium_workflow_instances, [:conversation_id]))
alter table(:cyclium_workflow_instances) do
remove(:conversation_id)
end
drop_if_exists(index(:cyclium_episodes, [:parent_episode_id]))
drop_if_exists(index(:cyclium_episodes, [:conversation_id]))
alter table(:cyclium_episodes) do
remove(:parent_episode_id)
remove(:conversation_id)
end
drop(table(:cyclium_conversations))
end
end