Skip to main content

priv/repo/migrations/20260428000000_create_squidie_schema.exs

defmodule Squidie.Repo.Migrations.CreateSquidieSchema do
  use Ecto.Migration

  def change do
    create table(:squidie_journal_threads, primary_key: false) do
      add :id, :text, primary_key: true
      add :rev, :bigint, null: false, default: 0
      add :metadata, :map, null: false, default: %{}
      add :created_at_ms, :bigint, null: false
      add :updated_at_ms, :bigint, null: false

      timestamps(type: :utc_datetime_usec)
    end

    create table(:squidie_journal_entries, primary_key: false) do
      add :id, :binary_id, primary_key: true

      add :thread_id,
          references(:squidie_journal_threads,
            column: :id,
            type: :text,
            on_delete: :delete_all
          ),
          null: false

      add :seq, :bigint, null: false
      add :entry, :binary, null: false

      timestamps(type: :utc_datetime_usec)
    end

    create unique_index(:squidie_journal_entries, [:thread_id, :seq])

    create table(:squidie_journal_checkpoints, primary_key: false) do
      add :key_hash, :string, primary_key: true
      add :key, :binary, null: false
      add :checkpoint, :binary, null: false

      timestamps(type: :utc_datetime_usec)
    end
  end
end