From 3334999eb1c2a9e6286d1bfa67dc82d76dba127a Mon Sep 17 00:00:00 2001 From: Zach Daniel Date: Sun, 5 May 2024 11:40:07 -0400 Subject: [PATCH] fix: properly pass old version in when migrating extensions --- lib/migration_generator/migration_generator.ex | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/migration_generator/migration_generator.ex b/lib/migration_generator/migration_generator.ex index 05bbff64..2e6f1163 100644 --- a/lib/migration_generator/migration_generator.ex +++ b/lib/migration_generator/migration_generator.ex @@ -251,8 +251,18 @@ defmodule AshPostgres.MigrationGenerator do extensions_snapshot[:ash_functions_version] ) - {_ext_name, version, up_fn, _down_fn} when is_function(up_fn, 1) -> - up_fn.(version) + {ext_name, _version, up_fn, _down_fn} when is_function(up_fn, 1) -> + current_version = + Enum.find_value(extensions_snapshot[:installed] || [], 0, fn name -> + with ["", "v" <> version] <- String.split(name, to_string(ext_name)), + {integer, ""} <- Integer.parse(version) do + integer + else + _ -> nil + end + end) + + up_fn.(current_version) extension -> "execute(\"CREATE EXTENSION IF NOT EXISTS \\\"#{extension}\\\"\")"