Current section
Files
Jump to
Current section
Files
priv/test_repo/migrations/20250123000001_create_arcana_tables.exs
defmodule Arcana.TestRepo.Migrations.CreateArcanaTables do
use Ecto.Migration
def up do
execute "CREATE EXTENSION IF NOT EXISTS vector"
create table(:arcana_documents, primary_key: false) do
add :id, :binary_id, primary_key: true
add :content, :text
add :content_type, :string, default: "text/plain"
add :source_id, :string
add :file_path, :string
add :metadata, :map, default: %{}
add :status, :string, default: "pending"
add :error, :text
add :chunk_count, :integer, default: 0
timestamps()
end
create table(:arcana_chunks, primary_key: false) do
add :id, :binary_id, primary_key: true
add :text, :text, null: false
add :embedding, :vector, size: 384, null: false
add :chunk_index, :integer, default: 0
add :token_count, :integer
add :metadata, :map, default: %{}
add :document_id, references(:arcana_documents, type: :binary_id, on_delete: :delete_all)
timestamps()
end
create index(:arcana_chunks, [:document_id])
create index(:arcana_documents, [:source_id])
execute """
CREATE INDEX arcana_chunks_embedding_idx ON arcana_chunks
USING hnsw (embedding vector_cosine_ops)
"""
end
def down do
drop table(:arcana_chunks)
drop table(:arcana_documents)
execute "DROP EXTENSION IF EXISTS vector"
end
end