Milvex. Schema. Migration
(milvex v0.14.0)
Copy Markdown
Boot-time schema migration for Milvus collections.
Provides functionality to:
- Create collections from DSL definitions when missing
- Verify existing schemas against expected definitions
- Ensure indexes declared on the DSL are created when missing
This is the conservative, additive-only path invoked from your application's
supervision tree. It will never drop or recreate indexes, fields, or the
collection itself. Operators wanting destructive migrations (drops, index
recreations) should run mix milvex.migrate --apply --allow-drop, which
exposes the full plan and requires explicit confirmation.
Options
:strict- Whentrue, raises on schema mismatches instead of logging warnings. Useful for CI/CD pipelines. Default:false
Examples
# Basic migration
Milvex.Schema.Migration.migrate!(conn, MyApp.Movies, [])
# Strict mode (fails on schema mismatch)
Milvex.Schema.Migration.migrate!(conn, MyApp.Movies, strict: true)
Summary
Functions
Migrates a collection module to Milvus.
Verifies that the existing collection schema matches the expected schema.
Types
Functions
@spec migrate!(GenServer.server(), module(), keyword()) :: :ok
Migrates a collection module to Milvus.
If the collection exists, verifies the schema matches and ensures any indexes declared on the DSL but missing in Milvus are created. If the collection does not exist, it is created together with its declared indexes.
Destructive operations (dropping fields, dropping or recreating indexes) are
intentionally not performed here. Use mix milvex.migrate --apply --allow-drop
for those.
Options
:strict- Raise on schema mismatch instead of warning. Default:false- Any additional options are passed to Milvus API calls.
Returns
:okon success- Raises
Milvex.Erroron failure
@spec verify_schema!(GenServer.server(), module(), String.t(), keyword()) :: {:ok, :match} | {:ok, {:mismatch, schema_diff()}}
Verifies that the existing collection schema matches the expected schema.
Options
:strict- Raise on mismatch instead of warning. Default:false
Returns
{:ok, :match}- Schemas match{:ok, {:mismatch, diff}}- Schemas differ (only in non-strict mode)- Raises in strict mode when schemas don't match