defmodule Cairnloop.Repo.Migrations.CreateKnowledgeBase do use Ecto.Migration def up do execute "CREATE EXTENSION IF NOT EXISTS vector" create table(:cairnloop_articles) do add :title, :string, null: false add :status, :string, null: false, default: "draft" timestamps() end create table(:cairnloop_revisions) do add :article_id, references(:cairnloop_articles, on_delete: :delete_all), null: false add :content, :text, null: false add :version, :integer, null: false, default: 1 add :state, :string, null: false, default: "draft" timestamps() end create index(:cairnloop_revisions, [:article_id]) create index(:cairnloop_revisions, [:state]) create table(:cairnloop_chunks) do add :revision_id, references(:cairnloop_revisions, on_delete: :delete_all), null: false add :content, :text, null: false add :embedding, :vector, size: 1536 timestamps() end create index(:cairnloop_chunks, [:revision_id]) end def down do drop table(:cairnloop_chunks) drop table(:cairnloop_revisions) drop table(:cairnloop_articles) execute "DROP EXTENSION IF EXISTS vector" end end