diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b6f65dd4..cd9ca03b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -242,7 +242,7 @@ jobs: - name: Setup sqlc uses: sqlc-dev/setup-sqlc@v4 with: - sqlc-version: "1.22.0" + sqlc-version: "1.24.0" - name: Run sqlc diff run: | diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d99adf0..16ffb3db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed + +- Ensure `ScheduledAt` is respected on `InsertManyTx`. [PR #121](https://github.com/riverqueue/river/pull/121). + ## [0.0.14] - 2023-12-13 ### Fixed diff --git a/client_test.go b/client_test.go index a96f56da..09b05778 100644 --- a/client_test.go +++ b/client_test.go @@ -1016,6 +1016,24 @@ func Test_Client_InsertManyTx(t *testing.T) { require.Len(t, jobs, 2, "Expected to find exactly two jobs of kind: "+(noOpArgs{}).Kind()) }) + t.Run("SupportsScheduledJobs", func(t *testing.T) { + t.Parallel() + + client, bundle := setup(t) + + startClient(ctx, t, client) + + count, err := client.InsertManyTx(ctx, bundle.tx, []InsertManyParams{{noOpArgs{}, &InsertOpts{ScheduledAt: time.Now().Add(time.Minute)}}}) + require.NoError(t, err) + require.Equal(t, int64(1), count) + + insertedJobs, err := bundle.queries.JobGetByKind(ctx, bundle.tx, noOpArgs{}.Kind()) + require.NoError(t, err) + require.Len(t, insertedJobs, 1) + require.Equal(t, dbsqlc.JobStateScheduled, insertedJobs[0].State) + require.WithinDuration(t, time.Now().Add(time.Minute), insertedJobs[0].ScheduledAt, 2*time.Second) + }) + // A client's allowed to send nil to their driver so they can, for example, // easily use test transactions in their test suite. t.Run("WithDriverWithoutPool", func(t *testing.T) { diff --git a/internal/dbadapter/db_adapter.go b/internal/dbadapter/db_adapter.go index b24e8926..e132f561 100644 --- a/internal/dbadapter/db_adapter.go +++ b/internal/dbadapter/db_adapter.go @@ -305,6 +305,7 @@ func (a *StandardAdapter) JobInsertManyTx(ctx context.Context, tx pgx.Tx, params Priority: int16(min(params.Priority, math.MaxInt16)), Queue: params.Queue, State: params.State, + ScheduledAt: params.ScheduledAt, Tags: tags, } } diff --git a/internal/dbsqlc/copyfrom.go b/internal/dbsqlc/copyfrom.go index 192070fc..3c8ea698 100644 --- a/internal/dbsqlc/copyfrom.go +++ b/internal/dbsqlc/copyfrom.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.22.0 +// sqlc v1.24.0 // source: copyfrom.go package dbsqlc @@ -36,6 +36,7 @@ func (r iteratorForJobInsertMany) Values() ([]interface{}, error) { r.rows[0].Metadata, r.rows[0].Priority, r.rows[0].Queue, + r.rows[0].ScheduledAt, r.rows[0].State, r.rows[0].Tags, }, nil @@ -46,5 +47,5 @@ func (r iteratorForJobInsertMany) Err() error { } func (q *Queries) JobInsertMany(ctx context.Context, db DBTX, arg []JobInsertManyParams) (int64, error) { - return db.CopyFrom(ctx, []string{"river_job"}, []string{"args", "errors", "kind", "max_attempts", "metadata", "priority", "queue", "state", "tags"}, &iteratorForJobInsertMany{rows: arg}) + return db.CopyFrom(ctx, []string{"river_job"}, []string{"args", "errors", "kind", "max_attempts", "metadata", "priority", "queue", "scheduled_at", "state", "tags"}, &iteratorForJobInsertMany{rows: arg}) } diff --git a/internal/dbsqlc/db.go b/internal/dbsqlc/db.go index dbf90020..1446d77b 100644 --- a/internal/dbsqlc/db.go +++ b/internal/dbsqlc/db.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.22.0 +// sqlc v1.24.0 package dbsqlc diff --git a/internal/dbsqlc/models.go b/internal/dbsqlc/models.go index 0a371bcf..746965a9 100644 --- a/internal/dbsqlc/models.go +++ b/internal/dbsqlc/models.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.22.0 +// sqlc v1.24.0 package dbsqlc diff --git a/internal/dbsqlc/river_job.sql b/internal/dbsqlc/river_job.sql index a8352144..47f0cc6a 100644 --- a/internal/dbsqlc/river_job.sql +++ b/internal/dbsqlc/river_job.sql @@ -184,6 +184,7 @@ INSERT INTO river_job( metadata, priority, queue, + scheduled_at, state, tags ) VALUES ( @@ -194,6 +195,7 @@ INSERT INTO river_job( @metadata, @priority, @queue, + @scheduled_at, @state, @tags ); diff --git a/internal/dbsqlc/river_job.sql.go b/internal/dbsqlc/river_job.sql.go index 5ea259f3..756551ba 100644 --- a/internal/dbsqlc/river_job.sql.go +++ b/internal/dbsqlc/river_job.sql.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.22.0 +// sqlc v1.24.0 // source: river_job.sql package dbsqlc @@ -522,6 +522,7 @@ type JobInsertManyParams struct { Metadata []byte Priority int16 Queue string + ScheduledAt time.Time State JobState Tags []string } diff --git a/internal/dbsqlc/river_leader.sql.go b/internal/dbsqlc/river_leader.sql.go index 947aebaf..ffae88cd 100644 --- a/internal/dbsqlc/river_leader.sql.go +++ b/internal/dbsqlc/river_leader.sql.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.22.0 +// sqlc v1.24.0 // source: river_leader.sql package dbsqlc diff --git a/riverdriver/riverdatabasesql/internal/dbsqlc/db.go b/riverdriver/riverdatabasesql/internal/dbsqlc/db.go index 57d06d7d..8f705105 100644 --- a/riverdriver/riverdatabasesql/internal/dbsqlc/db.go +++ b/riverdriver/riverdatabasesql/internal/dbsqlc/db.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.22.0 +// sqlc v1.24.0 package dbsqlc diff --git a/riverdriver/riverdatabasesql/internal/dbsqlc/models.go b/riverdriver/riverdatabasesql/internal/dbsqlc/models.go index b42c6819..c5b6578c 100644 --- a/riverdriver/riverdatabasesql/internal/dbsqlc/models.go +++ b/riverdriver/riverdatabasesql/internal/dbsqlc/models.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.22.0 +// sqlc v1.24.0 package dbsqlc diff --git a/riverdriver/riverdatabasesql/internal/dbsqlc/river_migration.sql.go b/riverdriver/riverdatabasesql/internal/dbsqlc/river_migration.sql.go index 66048d8f..9829149b 100644 --- a/riverdriver/riverdatabasesql/internal/dbsqlc/river_migration.sql.go +++ b/riverdriver/riverdatabasesql/internal/dbsqlc/river_migration.sql.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.22.0 +// sqlc v1.24.0 // source: river_migration.sql package dbsqlc diff --git a/riverdriver/riverpgxv5/internal/dbsqlc/db.go b/riverdriver/riverpgxv5/internal/dbsqlc/db.go index 27ee12e2..533f98ed 100644 --- a/riverdriver/riverpgxv5/internal/dbsqlc/db.go +++ b/riverdriver/riverpgxv5/internal/dbsqlc/db.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.22.0 +// sqlc v1.24.0 package dbsqlc diff --git a/riverdriver/riverpgxv5/internal/dbsqlc/models.go b/riverdriver/riverpgxv5/internal/dbsqlc/models.go index b42c6819..c5b6578c 100644 --- a/riverdriver/riverpgxv5/internal/dbsqlc/models.go +++ b/riverdriver/riverpgxv5/internal/dbsqlc/models.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.22.0 +// sqlc v1.24.0 package dbsqlc diff --git a/riverdriver/riverpgxv5/internal/dbsqlc/river_migration.sql.go b/riverdriver/riverpgxv5/internal/dbsqlc/river_migration.sql.go index 583b8d59..b9424df3 100644 --- a/riverdriver/riverpgxv5/internal/dbsqlc/river_migration.sql.go +++ b/riverdriver/riverpgxv5/internal/dbsqlc/river_migration.sql.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.22.0 +// sqlc v1.24.0 // source: river_migration.sql package dbsqlc