Documentation
¶
Overview ¶
Package riverdriver exposes generic constructs to be implemented by specific drivers that wrap third party database packages, with the aim being to keep the main River interface decoupled from a specific database package so that other packages or other major versions of packages can be supported in future River versions.
River currently only supports Pgx v5, and the interface here wrap it with only the thinnest possible layer. Adding support for alternate packages will require the interface to change substantially, and therefore it should not be implemented or invoked by user code. Changes to interfaces in this package WILL NOT be considered breaking changes for purposes of River's semantic versioning.
Index ¶
- Variables
- type Driver
- type Executor
- type ExecutorTx
- type JobCancelParams
- type JobDeleteBeforeParams
- type JobGetAvailableParams
- type JobGetByKindAndUniquePropertiesParams
- type JobGetStuckParams
- type JobInsertFastParams
- type JobInsertFullParams
- type JobRescueManyParams
- type JobScheduleParams
- type JobSetStateIfRunningParams
- func JobSetStateCancelled(id int64, finalizedAt time.Time, errData []byte) *JobSetStateIfRunningParams
- func JobSetStateCompleted(id int64, finalizedAt time.Time) *JobSetStateIfRunningParams
- func JobSetStateDiscarded(id int64, finalizedAt time.Time, errData []byte) *JobSetStateIfRunningParams
- func JobSetStateErrorAvailable(id int64, scheduledAt time.Time, errData []byte) *JobSetStateIfRunningParams
- func JobSetStateErrorRetryable(id int64, scheduledAt time.Time, errData []byte) *JobSetStateIfRunningParams
- func JobSetStateSnoozed(id int64, scheduledAt time.Time, maxAttempts int) *JobSetStateIfRunningParams
- func JobSetStateSnoozedAvailable(id int64, scheduledAt time.Time, maxAttempts int) *JobSetStateIfRunningParams
- type JobUpdateParams
- type Leader
- type LeaderElectParams
- type LeaderInsertParams
- type LeaderResignParams
- type Listener
- type Migration
- type Notification
Constants ¶
This section is empty.
Variables ¶
var ( ErrNotImplemented = errors.New("driver does not implement this functionality") ErrSubTxNotSupported = errors.New("subtransactions not supported for this driver") )
Functions ¶
This section is empty.
Types ¶
type Driver ¶
type Driver[TTx any] interface { // GetExecutor gets an executor for the driver. // // API is not stable. DO NOT USE. GetExecutor() Executor // GetListener gets a listener for purposes of receiving notifications. // // API is not stable. DO NOT USE. GetListener() Listener // HasPool returns true if the driver is configured with a database pool. // // API is not stable. DO NOT USE. HasPool() bool // UnwrapExecutor gets unwraps executor from a driver transaction. // // API is not stable. DO NOT USE. UnwrapExecutor(tx TTx) ExecutorTx }
Driver provides a database driver for use with river.Client.
Its purpose is to wrap the interface of a third party database package, with the aim being to keep the main River interface decoupled from a specific database package so that other packages or major versions of packages can be supported in future River versions.
River currently only supports Pgx v5, and this interface wraps it with only the thinnest possible layer. Adding support for alternate packages will require it to change substantially, and therefore it should not be implemented or invoked by user code. Changes to this interface WILL NOT be considered breaking changes for purposes of River's semantic versioning.
API is not stable. DO NOT IMPLEMENT.
type Executor ¶
type Executor interface {
// Begin begins a new subtransaction. ErrSubTxNotSupported may be returned
// if the executor is a transaction and the driver doesn't support
// subtransactions (like riverdriver/riverdatabasesql for database/sql).
Begin(ctx context.Context) (ExecutorTx, error)
// Exec executes raw SQL. Used for migrations.
Exec(ctx context.Context, sql string) (struct{}, error)
JobCancel(ctx context.Context, params *JobCancelParams) (*rivertype.JobRow, error)
JobDeleteBefore(ctx context.Context, params *JobDeleteBeforeParams) (int, error)
JobGetAvailable(ctx context.Context, params *JobGetAvailableParams) ([]*rivertype.JobRow, error)
JobGetByID(ctx context.Context, id int64) (*rivertype.JobRow, error)
JobGetByIDMany(ctx context.Context, id []int64) ([]*rivertype.JobRow, error)
JobGetByKindAndUniqueProperties(ctx context.Context, params *JobGetByKindAndUniquePropertiesParams) (*rivertype.JobRow, error)
JobGetByKindMany(ctx context.Context, kind []string) ([]*rivertype.JobRow, error)
JobGetStuck(ctx context.Context, params *JobGetStuckParams) ([]*rivertype.JobRow, error)
JobInsertFast(ctx context.Context, params *JobInsertFastParams) (*rivertype.JobRow, error)
JobInsertFastMany(ctx context.Context, params []*JobInsertFastParams) (int64, error)
JobInsertFull(ctx context.Context, params *JobInsertFullParams) (*rivertype.JobRow, error)
JobList(ctx context.Context, sql string, namedArgs map[string]any) ([]*rivertype.JobRow, error)
JobListFields() string
JobRescueMany(ctx context.Context, params *JobRescueManyParams) (*struct{}, error)
JobRetry(ctx context.Context, id int64) (*rivertype.JobRow, error)
JobSchedule(ctx context.Context, params *JobScheduleParams) (int, error)
JobSetStateIfRunning(ctx context.Context, params *JobSetStateIfRunningParams) (*rivertype.JobRow, error)
JobUpdate(ctx context.Context, params *JobUpdateParams) (*rivertype.JobRow, error)
LeaderAttemptElect(ctx context.Context, params *LeaderElectParams) (bool, error)
LeaderAttemptReelect(ctx context.Context, params *LeaderElectParams) (bool, error)
LeaderDeleteExpired(ctx context.Context, name string) (int, error)
LeaderGetElectedLeader(ctx context.Context, name string) (*Leader, error)
LeaderInsert(ctx context.Context, params *LeaderInsertParams) (*Leader, error)
LeaderResign(ctx context.Context, params *LeaderResignParams) (bool, error)
// MigrationDeleteByVersionMany deletes many migration versions.
MigrationDeleteByVersionMany(ctx context.Context, versions []int) ([]*Migration, error)
// MigrationGetAll gets all currently applied migrations.
MigrationGetAll(ctx context.Context) ([]*Migration, error)
// MigrationInsertMany inserts many migration versions.
MigrationInsertMany(ctx context.Context, versions []int) ([]*Migration, error)
Notify(ctx context.Context, topic string, payload string) error
PGAdvisoryXactLock(ctx context.Context, key int64) (*struct{}, error)
// TableExists checks whether a table exists for the schema in the current
// search schema.
TableExists(ctx context.Context, tableName string) (bool, error)
}
Executor provides River operations against a database. It may be a database pool or transaction.
API is not stable. DO NOT IMPLEMENT.
type ExecutorTx ¶
type ExecutorTx interface {
Executor
// Commit commits the transaction.
//
// API is not stable. DO NOT USE.
Commit(ctx context.Context) error
// Rollback rolls back the transaction.
//
// API is not stable. DO NOT USE.
Rollback(ctx context.Context) error
}
ExecutorTx is an executor which is a transaction. In addition to standard Executor operations, it may be committed or rolled back.
API is not stable. DO NOT IMPLEMENT.
type JobCancelParams ¶ added in v0.0.23
type JobDeleteBeforeParams ¶ added in v0.0.23
type JobGetAvailableParams ¶ added in v0.0.23
type JobGetByKindAndUniquePropertiesParams ¶ added in v0.0.23
type JobGetStuckParams ¶ added in v0.0.23
type JobInsertFastParams ¶ added in v0.0.23
type JobInsertFullParams ¶ added in v0.0.23
type JobRescueManyParams ¶ added in v0.0.23
type JobScheduleParams ¶ added in v0.0.23
type JobSetStateIfRunningParams ¶ added in v0.0.23
type JobSetStateIfRunningParams struct {
ID int64
ErrData []byte
FinalizedAt *time.Time
MaxAttempts *int
ScheduledAt *time.Time
State rivertype.JobState
}
JobSetStateIfRunningParams are parameters to update the state of a currently running job. Use one of the constructors below to ensure a correct combination of parameters.
func JobSetStateCancelled ¶ added in v0.0.23
func JobSetStateCancelled(id int64, finalizedAt time.Time, errData []byte) *JobSetStateIfRunningParams
func JobSetStateCompleted ¶ added in v0.0.23
func JobSetStateCompleted(id int64, finalizedAt time.Time) *JobSetStateIfRunningParams
func JobSetStateDiscarded ¶ added in v0.0.23
func JobSetStateDiscarded(id int64, finalizedAt time.Time, errData []byte) *JobSetStateIfRunningParams
func JobSetStateErrorAvailable ¶ added in v0.0.23
func JobSetStateErrorAvailable(id int64, scheduledAt time.Time, errData []byte) *JobSetStateIfRunningParams
func JobSetStateErrorRetryable ¶ added in v0.0.23
func JobSetStateErrorRetryable(id int64, scheduledAt time.Time, errData []byte) *JobSetStateIfRunningParams
func JobSetStateSnoozed ¶ added in v0.0.23
func JobSetStateSnoozed(id int64, scheduledAt time.Time, maxAttempts int) *JobSetStateIfRunningParams
func JobSetStateSnoozedAvailable ¶ added in v0.0.23
func JobSetStateSnoozedAvailable(id int64, scheduledAt time.Time, maxAttempts int) *JobSetStateIfRunningParams
type JobUpdateParams ¶ added in v0.0.23
type LeaderElectParams ¶ added in v0.0.23
type LeaderInsertParams ¶ added in v0.0.23
type LeaderResignParams ¶ added in v0.0.23
type Listener ¶ added in v0.0.23
type Listener interface {
Close(ctx context.Context) error
Connect(ctx context.Context) error
Listen(ctx context.Context, topic string) error
Ping(ctx context.Context) error
Unlisten(ctx context.Context, topic string) error
WaitForNotification(ctx context.Context) (*Notification, error)
}
Listener listens for notifications. In Postgres, this is a database connection where `LISTEN` has been run.
API is not stable. DO NOT IMPLEMENT.
type Migration ¶
type Migration struct {
// ID is an automatically generated primary key for the migration.
//
// API is not stable. DO NOT USE.
ID int
// CreatedAt is when the migration was initially created.
//
// API is not stable. DO NOT USE.
CreatedAt time.Time
// Version is the version of the migration.
//
// API is not stable. DO NOT USE.
Version int
}
Migration represents a River migration.
API is not stable. DO NOT USE.
type Notification ¶ added in v0.0.23
Directories
¶
| Path | Synopsis |
|---|---|
|
riverdatabasesql
module
|
|
|
riverdrivertest
module
|
|
|
riverpgxv5
module
|
|
|
riversqlite
module
|