migrate: Add CallbackRegister
This commit is contained in:
committed by
Michal Jan Matczuk
parent
fbe7bc45b5
commit
9dd79fc620
@@ -6,6 +6,7 @@ package migrate
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"errors"
|
||||||
|
|
||||||
"github.com/scylladb/gocqlx/v2"
|
"github.com/scylladb/gocqlx/v2"
|
||||||
)
|
)
|
||||||
@@ -31,3 +32,30 @@ type CallbackFunc func(ctx context.Context, session gocqlx.Session, ev CallbackE
|
|||||||
// Use this variable to register a global callback dispatching function.
|
// Use this variable to register a global callback dispatching function.
|
||||||
// See CallbackFunc for details.
|
// See CallbackFunc for details.
|
||||||
var Callback CallbackFunc
|
var Callback CallbackFunc
|
||||||
|
|
||||||
|
type nameEvent struct {
|
||||||
|
name string
|
||||||
|
event CallbackEvent
|
||||||
|
}
|
||||||
|
|
||||||
|
// CallbackRegister allows to register a handlers for an event type and a name.
|
||||||
|
// It dispatches calls to the registered handlers.
|
||||||
|
// If there is no handler registered for CallComment an error is returned.
|
||||||
|
type CallbackRegister map[nameEvent]CallbackFunc
|
||||||
|
|
||||||
|
// Add registers a callback handler.
|
||||||
|
func (r CallbackRegister) Add(ev CallbackEvent, name string, f CallbackFunc) {
|
||||||
|
r[nameEvent{name, ev}] = f
|
||||||
|
}
|
||||||
|
|
||||||
|
// Callback is CallbackFunc.
|
||||||
|
func (r CallbackRegister) Callback(ctx context.Context, session gocqlx.Session, ev CallbackEvent, name string) error {
|
||||||
|
f, ok := r[nameEvent{name, ev}]
|
||||||
|
if !ok {
|
||||||
|
if ev == CallComment {
|
||||||
|
return errors.New("missing handler")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return f(ctx, session, ev, name)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user