events

package
v0.5.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 28, 2022 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrNotSubscribed = errors.New("Not subscribed")
View Source
var GlobalHandler = EventLogger{NewMultiHandler()}

We require a global event manager for sqlite's global hooks

Functions

func AddHandler

func AddHandler(er Handler)

func AddSQLHook

func AddSQLHook(table string, queryType QueryType, hookfunc func(SqliteHookData) *Event) error

func Fire

func Fire(e *Event)

func RegisterDatabaseHooks

func RegisterDatabaseHooks()

func RemoveHandler

func RemoveHandler(er Handler)

func SQLiteSelectConn

func SQLiteSelectConn(c *sqlite3.SQLiteConn, stmt string, vals ...driver.Value) (driver.Rows, error)

Types

type AsyncFire

type AsyncFire struct {
	Handler
}

func (AsyncFire) Fire

func (af AsyncFire) Fire(e *Event)

type Event

type Event struct {
	Event  string              `json:"event"`
	User   string              `json:"user,omitempty" db:"user"`
	App    string              `json:"app,omitempty" db:"app"`
	Plugin *string             `json:"plugin,omitempty" db:"plugin"`
	Key    *string             `json:"key,omitempty" db:"key"`
	Object string              `json:"object,omitempty" db:"object"`
	Tags   *dbutil.StringArray `json:"tags,omitempty" db:"tags"`
	Type   string              `json:"type,omitempty" db:"type"`

	Data interface{} `json:"data,omitempty"`
}

func FillAppEvent

func FillAppEvent(s SqliteHookData, id string) (*Event, error)

func FillObjectEvent

func FillObjectEvent(s SqliteHookData, id string) (*Event, error)

func (*Event) String

func (e *Event) String() string

type EventLogger

type EventLogger struct {
	Handler
}

func (EventLogger) Fire

func (el EventLogger) Fire(e *Event)

type Handler

type Handler interface {
	Fire(e *Event)
}

type Map

type Map map[string]*MultiHandler

Map: NOT THREADSAFE

func NewMap

func NewMap() Map

func (Map) Fire

func (em Map) Fire(e *Event)

func (Map) Subscribe

func (em Map) Subscribe(event string, h Handler) error

func (Map) Unsubscribe

func (em Map) Unsubscribe(event string, h Handler) error

type MultiHandler

type MultiHandler struct {
	sync.RWMutex
	Routers map[Handler]bool
}

func NewMultiHandler

func NewMultiHandler() *MultiHandler

func (*MultiHandler) AddHandler

func (em *MultiHandler) AddHandler(er Handler) error

func (*MultiHandler) Fire

func (em *MultiHandler) Fire(e *Event)

func (*MultiHandler) RemoveHandler

func (em *MultiHandler) RemoveHandler(er Handler) error

type QueryType

type QueryType int
const (
	SQL_CREATE QueryType = iota
	SQL_UPDATE
	SQL_DELETE
)

type Router

type Router struct {
	sync.RWMutex

	EventMap map[string]*eventList

	NoEvent *eventList
}

func NewRouter

func NewRouter() *Router

func (*Router) Fire

func (r *Router) Fire(e *Event)

func (*Router) Subscribe

func (r *Router) Subscribe(e Event, h Handler) error

func (*Router) Unsubscribe

func (r *Router) Unsubscribe(e Event, h Handler) error

type SqliteHook

type SqliteHook struct {
	Table string    // The table
	Query QueryType // The op on the table
}

type SqliteHookData

type SqliteHookData struct {
	Type  QueryType
	Table string
	RowID int64
	Conn  *sqlite3.SQLiteConn
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL