MCPcopy Index your code
hub / github.com/coder/coder / findRollbacks

Function findRollbacks

scripts/develop/dbrecovery.go:234–257  ·  view source on GitHub ↗

findRollbacks returns tracked migrations whose file no longer exists on disk, sorted in descending version order.

(ctx context.Context, db *sql.DB, migrDir string)

Source from the content-addressed store, hash-verified

232// findRollbacks returns tracked migrations whose file no longer
233// exists on disk, sorted in descending version order.
234func findRollbacks(ctx context.Context, db *sql.DB, migrDir string) ([]rollbackEntry, error) {
235 rows, err := db.QueryContext(ctx, `
236 SELECT version, filename, down_sql
237 FROM _develop.applied_migrations
238 ORDER BY version DESC
239 `)
240 if err != nil {
241 return nil, xerrors.Errorf("query tracking table: %w", err)
242 }
243 defer rows.Close()
244
245 var rollbacks []rollbackEntry
246 for rows.Next() {
247 var rb rollbackEntry
248 if err := rows.Scan(&rb.version, &rb.filename, &rb.downSQL); err != nil {
249 return nil, xerrors.Errorf("scan row: %w", err)
250 }
251 downPath := filepath.Join(migrDir, rb.filename)
252 if _, err := os.Stat(downPath); err != nil {
253 rollbacks = append(rollbacks, rb)
254 }
255 }
256 return rollbacks, rows.Err()
257}
258
259// findContentChanges compares tracked up/down SQL against disk
260// for all tracked versions whose files still exist.

Callers 1

checkAndRecoverFunction · 0.85

Calls 6

QueryContextMethod · 0.80
ErrMethod · 0.80
CloseMethod · 0.65
NextMethod · 0.65
ErrorfMethod · 0.45
ScanMethod · 0.45

Tested by

no test coverage detected