mirror of
https://github.com/grafana/grafana.git
synced 2024-11-27 11:20:27 -06:00
22 lines
958 B
Go
22 lines
958 B
Go
|
package persistentcollection
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
)
|
||
|
|
||
|
type Predicate[T any] func(item T) (bool, error)
|
||
|
type UpdateFn[T any] func(item T) (updated bool, updatedItem T, err error)
|
||
|
|
||
|
// PersistentCollection is a collection of items that's going to retain its state between Grafana restarts.
|
||
|
// The main purpose of this API is to reduce the time-to-Proof-of-Concept - this is NOT intended for production use.
|
||
|
//
|
||
|
// The item type needs to be serializable to JSON.
|
||
|
// @alpha -- EXPERIMENTAL
|
||
|
type PersistentCollection[T any] interface {
|
||
|
Delete(ctx context.Context, namespace string, predicate Predicate[T]) (deletedCount int, err error)
|
||
|
FindFirst(ctx context.Context, namespace string, predicate Predicate[T]) (T, error)
|
||
|
Find(ctx context.Context, namespace string, predicate Predicate[T]) ([]T, error)
|
||
|
Update(ctx context.Context, namespace string, updateFn UpdateFn[T]) (updatedCount int, err error)
|
||
|
Insert(ctx context.Context, namespace string, item T) error
|
||
|
}
|