From 1a07aa45ed7f1e9f1b7b137672855b8d578b73a1 Mon Sep 17 00:00:00 2001
From: Tim Macdonald <tim@metabase.com>
Date: Wed, 17 Jul 2024 02:58:52 +0100
Subject: [PATCH] Add type hints to dev/migrate.clj to avoid reflection
 warnings (#45679)

---
 dev/src/dev/migrate.clj | 27 ++++++++++++++++-----------
 1 file changed, 16 insertions(+), 11 deletions(-)

diff --git a/dev/src/dev/migrate.clj b/dev/src/dev/migrate.clj
index a846ffbc48e..8b486c6588c 100644
--- a/dev/src/dev/migrate.clj
+++ b/dev/src/dev/migrate.clj
@@ -8,12 +8,16 @@
    [toucan2.core :as t2])
   (:import
    (liquibase Contexts Liquibase RuntimeEnvironment)
-   (liquibase.changelog ChangeLogIterator)
+   (liquibase.change Change)
+   (liquibase.changelog ChangeLogIterator ChangeSet DatabaseChangeLog)
    (liquibase.changelog.filter ChangeSetFilter)
    (liquibase.changelog.visitor ListVisitor)
+   (liquibase.database Database)
    (liquibase.database.core H2Database MySQLDatabase PostgresDatabase MariaDBDatabase)
    (liquibase.exception RollbackImpossibleException)
-   (liquibase.sqlgenerator SqlGeneratorFactory)))
+   (liquibase.sql Sql)
+   (liquibase.sqlgenerator SqlGeneratorFactory)
+   (liquibase.statement SqlStatement)))
 
 (set! *warn-on-reflection* true)
 
@@ -112,11 +116,11 @@
 (defn- stmts-to-sql
   [stmts sql-generator-factory database]
   (str/join "\n" (for [stmt stmts
-                       sql (.generateSql ^SqlGeneratorFactory sql-generator-factory stmt database)]
-                   (.toString sql))))
+                       sql (.generateSql ^SqlGeneratorFactory sql-generator-factory ^SqlStatement stmt ^Database database)]
+                   (.toString ^Sql sql))))
 
 (defn- change->sql
-  [change sql-generator-factory database]
+  [^Change change sql-generator-factory database]
   {:forward  (stmts-to-sql (.generateStatements change database) sql-generator-factory database)
    :rollback (try (stmts-to-sql (.generateRollbackStatements change database) sql-generator-factory database)
                   (catch RollbackImpossibleException e
@@ -141,12 +145,13 @@
   ([id db-type :- [:enum :postgres :mysql :mariadb :h2]]
    (t2/with-connection [conn]
      (liquibase/with-liquibase [^Liquibase liquibase conn]
-       (let [database            (liquibase-database db-type)
-             change-log-iterator (ChangeLogIterator. (.getDatabaseChangeLog liquibase) (into-array ChangeSetFilter []))
-             list-visistor       (ListVisitor.)
-             runtime-env         (RuntimeEnvironment. database (Contexts.) nil)
-             _                   (.run change-log-iterator list-visistor runtime-env)
-             change-set          (first (filter #(= id (.getId %)) (.getSeenChangeSets list-visistor)))
+       (let [database              (liquibase-database db-type)
+             change-log-iterator   (ChangeLogIterator. ^DatabaseChangeLog (.getDatabaseChangeLog liquibase)
+                                                       ^"[Lliquibase.changelog.filter.ChangeSetFilter;" (into-array ChangeSetFilter []))
+             list-visistor         (ListVisitor.)
+             runtime-env           (RuntimeEnvironment. database (Contexts.) nil)
+             _                     (.run change-log-iterator list-visistor runtime-env)
+             ^ChangeSet change-set (first (filter #(= id (.getId ^ChangeSet %)) (.getSeenChangeSets list-visistor)))
              sql-generator-factory (SqlGeneratorFactory/getInstance)]
          (reduce (fn [acc data]
                   ;; merge all changes in one change set into one single :forward and :rollback
-- 
GitLab