@@ -31,10 +31,11 @@ type PluginSchema struct {
3131// PluginMigrationResult holds the outcome of running a single plugin's
3232// schema migrations.
3333type PluginMigrationResult struct {
34- Slug string
35- Healthy bool
36- Error error
37- Version int
34+ Slug string
35+ Healthy bool
36+ Error error
37+ Version int
38+ LatestVersion int
3839}
3940
4041// pluginMigration represents a single numbered migration for a plugin.
@@ -130,15 +131,19 @@ func runSinglePluginMigrations(db *sql.DB, plugin PluginSchema) PluginMigrationR
130131 }
131132
132133 if len (migrations ) == 0 {
133- return PluginMigrationResult {Slug : plugin .Slug , Healthy : true , Version : 0 }
134+ return PluginMigrationResult {Slug : plugin .Slug , Healthy : true , Version : 0 , LatestVersion : 0 }
134135 }
135136
137+ // Compute the highest available migration version from files.
138+ latestVersion := migrations [len (migrations )- 1 ].Version
139+
136140 // Get already-applied versions.
137141 applied , err := getPluginAppliedVersions (ctx , db , plugin .Slug )
138142 if err != nil {
139143 return PluginMigrationResult {
140- Slug : plugin .Slug ,
141- Error : fmt .Errorf ("reading applied versions: %w" , err ),
144+ Slug : plugin .Slug ,
145+ LatestVersion : latestVersion ,
146+ Error : fmt .Errorf ("reading applied versions: %w" , err ),
142147 }
143148 }
144149 appliedSet := make (map [int ]bool , len (applied ))
@@ -165,9 +170,10 @@ func runSinglePluginMigrations(db *sql.DB, plugin PluginSchema) PluginMigrationR
165170 // code, so we skip the SQL validator (unlike user extensions).
166171 if err := execPluginMigration (ctx , db , plugin .Slug , m ); err != nil {
167172 return PluginMigrationResult {
168- Slug : plugin .Slug ,
169- Error : err ,
170- Version : highestVersion ,
173+ Slug : plugin .Slug ,
174+ Error : err ,
175+ Version : highestVersion ,
176+ LatestVersion : latestVersion ,
171177 }
172178 }
173179
@@ -179,9 +185,10 @@ func runSinglePluginMigrations(db *sql.DB, plugin PluginSchema) PluginMigrationR
179185 }
180186
181187 return PluginMigrationResult {
182- Slug : plugin .Slug ,
183- Healthy : true ,
184- Version : highestVersion ,
188+ Slug : plugin .Slug ,
189+ Healthy : true ,
190+ Version : highestVersion ,
191+ LatestVersion : latestVersion ,
185192 }
186193}
187194
0 commit comments