orm

package
v2.0.2 Latest Latest
Warning

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

Go to latest
Published: Feb 9, 2021 License: Apache-2.0 Imports: 15 Imported by: 4

Documentation

Index

Constants

View Source
const (
	StatusPublished   byte = 1
	StatusUnconfirmed byte = 2
	StatusConfirmed   byte = 3
)

Task status

Variables

View Source
var (
	ErrSub       = errx.New("Ошибка получения задач из очереди")
	ErrPub       = errx.New("Ошибка публикации задачи в очередь")
	ErrAck       = errx.New("Ошибка подтверждения задач в очереди")
	ErrUndo      = errx.New("Ошибка отмены опубликованной задачи")
	ErrLost      = errx.New("Ошибка получения неподтвержденных задач")
	ErrStat      = errx.New("Ошибка получения статистики задач")
	ErrTask      = errx.New("Ошибка получения метаданных задачи")
	ErrAgg       = errx.New("Ошибка агрегации объектов коллекции")
	ErrSelect    = errx.New("Ошибка загрузки объектов коллекции")
	ErrDelete    = errx.New("Ошибка удаления объектов коллекции")
	ErrUpsert    = errx.New("Ошибка обновления объектов коллекции")
	ErrFilter    = errx.New("Ошибка фильтрации объектов коллекции")
	ErrNotFound  = errx.New("Ошибка загрузки объекта")
	ErrIdxDelete = errx.New("Ошибка очистки индекса")
	ErrIdxUpsert = errx.New("Ошибка обновления индекса")
	ErrValPack   = errx.New("Ошибка упаковки значения")
	ErrValUnpack = errx.New("Ошибка распаковки значения")
	ErrVacuum    = errx.New("Ошибка автоочистки значений")
	ErrAll       = errx.New("Ошибка загрузки всех значений")
	ErrNext      = errx.New("Ошибка загрузки страницы значений")
	ErrFirst     = errx.New("Ошибка загрузки первого значения")
	ErrSequence  = errx.New("Ошибка загрузки коллекции")
	ErrLoadQuery = errx.New("Ошибка загрузки курсора запроса")
	ErrDropQuery = errx.New("Ошибка удаления курсора запроса")
	ErrSaveQuery = errx.New("Ошибка сохранения курсора запроса")
	ErrDuplicate = errx.New("Нарушение уникальности коллекции")
)

Ошибки модуля

Functions

func UnwrapBlobKey

func UnwrapBlobKey(key fdb.Key) fdb.Key

UnwrapBlobKey - обертка ключа для получения пользовательского ключа из системного, при загрузке

func UnwrapIndexKey

func UnwrapIndexKey(key fdb.Key) fdb.Key

UnwrapIndexKey - обертка ключа для получения пользовательского ключа из системного, при загрузке

func UnwrapQueryKey

func UnwrapQueryKey(key fdb.Key) fdb.Key

UnwrapQueryKey - обертка ключа для получения пользовательского ключа из системного, при загрузке

func UnwrapQueueKey

func UnwrapQueueKey(pref []byte, key fdb.Key) fdb.Key

UnwrapQueueKey - обертка ключа для получения пользовательского ключа из системного, при загрузке

func UnwrapTableKey

func UnwrapTableKey(key fdb.Key) fdb.Key

UnwrapTableKey - обертка ключа для получения пользовательского ключа из системного, при загрузке

func WrapBlobKey

func WrapBlobKey(tbid uint16, key fdb.Key) fdb.Key

WrapBlobKey - обертка для получения системного ключа из пользовательского, при сохранении

func WrapIndexKey

func WrapIndexKey(tbid, idxid uint16, key fdb.Key) fdb.Key

WrapIndexKey - обертка для получения системного ключа из пользовательского, при сохранении

func WrapQueryKey

func WrapQueryKey(tbid uint16, key fdb.Key) fdb.Key

WrapQueryKey - обертка для получения системного ключа из пользовательского, при сохранении

func WrapQueueKey

func WrapQueueKey(tbid, qid uint16, pref []byte, flag byte, key fdb.Key) fdb.Key

WrapQueueKey - обертка для получения системного ключа из пользовательского, при сохранении

func WrapTableKey

func WrapTableKey(tbid uint16, key fdb.Key) fdb.Key

WrapTableKey - обертка для получения системного ключа из пользовательского, при сохранении

Types

type Aggregator

type Aggregator func(fdb.KeyValue) error

Aggregator - описание функции-агрегатора для запросов

func Count

func Count(counter *uint64) Aggregator

type Filter

type Filter func(fdb.KeyValue) (ok bool, err error)

Filter - управляющий метод для фильтрации выборок Должен возвращать true, если объект нужно оставить и false в другом случае

type IndexBatchKey

type IndexBatchKey func([]byte) (map[uint16][]fdb.Key, error)

IndexBatchKey - для получения ключей при индексации коллекций

type IndexKey

type IndexKey func([]byte) (fdb.Key, error)

IndexKey - для получения ключей при индексации коллекций

type IndexMultiKey

type IndexMultiKey func([]byte) ([]fdb.Key, error)

IndexMultiKey - для получения ключей при индексации коллекций

type Option

type Option func(*options)

Option - доп.аргумент для инициализации коллекций

func BatchIndex

func BatchIndex(f IndexBatchKey) Option

func Creator

func Creator(s string) Option

func Delay

func Delay(d time.Duration) Option
func Header(k, v string) Option

func Headers

func Headers(h map[string]string) Option

func Index

func Index(id uint16, f IndexKey) Option

func LastKey

func LastKey(k fdb.Key) Option

func MultiIndex

func MultiIndex(id uint16, f IndexMultiKey) Option

func Prefix

func Prefix(p []byte) Option

func Refresh

func Refresh(d time.Duration) Option

func Reverse

func Reverse(r bool) Option

func VacuumWait

func VacuumWait(d time.Duration) Option

func Waiter added in v2.0.2

func Waiter(w *sync.WaitGroup) Option

type Query

type Query interface {
	// Критерии выбора (селекторы)
	ByID(ids ...fdb.Key) Query
	PossibleByID(ids ...fdb.Key) Query
	ByIndex(idx uint16, query fdb.Key) Query
	ByIndexRange(idx uint16, from, last fdb.Key) Query
	BySelector(Selector) Query

	// Модификаторы селекторов
	Forward() Query
	Reverse() Query
	Page(int) Query
	Limit(int) Query
	Where(Filter) Query

	// Обработка результатов
	Agg(...Aggregator) error
	All() ([]fdb.KeyValue, error)
	Next() ([]fdb.KeyValue, error)
	First() (fdb.KeyValue, error)
	Sequence(context.Context, ...Option) (<-chan fdb.KeyValue, <-chan error)
	Delete() error
	Empty() bool

	// Сохранение запроса (курсор)
	Save() (string, error)
	Drop() error
}

Query - универсальный интерфейс объекта запроса данных, основная логика

func NewQuery

func NewQuery(tb Table, tx mvcc.Tx) Query

type Queue

type Queue interface {
	ID() uint16

	Ack(mvcc.Tx, ...fdb.Key) (err error)
	Pub(mvcc.Tx, fdb.Key, ...Option) error
	PubList(mvcc.Tx, []fdb.Key, ...Option) error

	Sub(context.Context, db.Connection, int) (<-chan Task, <-chan error)
	SubList(context.Context, db.Connection, int) ([]Task, error)

	Undo(mvcc.Tx, fdb.Key) error
	Stat(mvcc.Tx) (int64, int64, error)
	Lost(mvcc.Tx, int) ([]Task, error)
	Task(mvcc.Tx, fdb.Key) (Task, error)
}

Queue - универсальный интерфейс очередей, для работы с задачами

func NewQueue

func NewQueue(id uint16, tb Table, args ...Option) Queue

type Selected added in v2.0.2

type Selected struct {
	Last fdb.Key
	Pair fdb.KeyValue
}

Selected - структура с доп.параметром последнего выбранного ключа селектора

type Selector

type Selector interface {
	Select(context.Context, Table, ...Option) (<-chan Selected, <-chan error)
}

Selector - поставщик сырых данных для запроса

func NewFullSelector

func NewFullSelector(tx mvcc.Tx) Selector

func NewIDsSelector

func NewIDsSelector(tx mvcc.Tx, ids []fdb.Key, strict bool) Selector

func NewIndexRangeSelector

func NewIndexRangeSelector(tx mvcc.Tx, idx uint16, from, last fdb.Key) Selector

func NewIndexSelector

func NewIndexSelector(tx mvcc.Tx, idx uint16, prefix fdb.Key) Selector

type Table

type Table interface {
	ID() uint16

	Select(mvcc.Tx) Query
	Cursor(mvcc.Tx, string) (Query, error)
	Delete(mvcc.Tx, ...fdb.Key) error
	Upsert(mvcc.Tx, ...fdb.KeyValue) error
	Insert(mvcc.Tx, ...fdb.KeyValue) error

	Vacuum(db.Connection) error
	Autovacuum(context.Context, db.Connection, ...Option)
}

Table - универсальный интерфейс коллекции, чтобы работать с запросами

func NewTable

func NewTable(id uint16, args ...Option) Table

type Task

type Task interface {
	Key() fdb.Key
	Body() []byte
	Pair() fdb.KeyValue
	Status() byte
	Repeats() uint32
	Creator() string
	Created() time.Time
	Planned() time.Time
	Headers() map[string]string

	Ack(mvcc.Tx) error
	Repeat(mvcc.Tx, time.Duration) error
}

Task - исполняемый элемент очереди

Jump to

Keyboard shortcuts

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