applyMigrationsInTxn executes the up SQL for every migration whose version is in [from, to] inside a single transaction, mirroring pgTxnDriver. The whole batch commits or rolls back together.
(ctx context.Context, t *testing.T, sqlDB *sql.DB, from, to int)
| 1548 | // in [from, to] inside a single transaction, mirroring pgTxnDriver. The whole |
| 1549 | // batch commits or rolls back together. |
| 1550 | func applyMigrationsInTxn(ctx context.Context, t *testing.T, sqlDB *sql.DB, from, to int) { |
| 1551 | t.Helper() |
| 1552 | |
| 1553 | entries, err := os.ReadDir(".") |
| 1554 | require.NoError(t, err) |
| 1555 | |
| 1556 | var files []string |
| 1557 | for _, entry := range entries { |
| 1558 | name := entry.Name() |
| 1559 | if !strings.HasSuffix(name, ".up.sql") { |
| 1560 | continue |
| 1561 | } |
| 1562 | var version int |
| 1563 | if _, err := fmt.Sscanf(name, "%06d_", &version); err != nil { |
| 1564 | continue |
| 1565 | } |
| 1566 | if version >= from && version <= to { |
| 1567 | files = append(files, name) |
| 1568 | } |
| 1569 | } |
| 1570 | slices.Sort(files) |
| 1571 | |
| 1572 | tx, err := sqlDB.BeginTx(ctx, nil) |
| 1573 | require.NoError(t, err) |
| 1574 | defer tx.Rollback() |
| 1575 | |
| 1576 | for _, name := range files { |
| 1577 | query, err := os.ReadFile(name) |
| 1578 | require.NoError(t, err) |
| 1579 | _, err = tx.ExecContext(ctx, string(query)) |
| 1580 | require.NoErrorf(t, err, "apply migration %s", name) |
| 1581 | } |
| 1582 | require.NoError(t, tx.Commit()) |
| 1583 | } |
| 1584 | |
| 1585 | func TestMigration000498SoftDeleteStaleWorkspaceAgents(t *testing.T) { |
| 1586 | t.Parallel() |
no test coverage detected