middleware

package
v1.0.1-rc1 Latest Latest
Warning

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

Go to latest
Published: Jun 23, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// PageFieldName - имя поля для номера страницы
	PageFieldName = "page"

	// LimitFieldName - имя поля для лимита
	LimitFieldName = "limit"

	// SortFieldName - имя поля для сортировки
	SortFieldName = "sort"

	// FilterFieldName - имя поля для фильтрации
	FilterFieldName = "filter"

	// CountHeaderName - заголовок с общим количеством
	CountHeaderName = "X-Pagination-Count"

	// PageHeaderName - заголовок с номером страницы
	PageHeaderName = "X-Pagination-Page"

	// LimitHeaderName - заголовок с лимитом
	LimitHeaderName = "X-Pagination-Limit"

	// SortHeaderName - заголовок с сортировкой
	SortHeaderName = "X-Pagination-Sort"

	// FilterHeaderName - заголовок с фильтрацией
	FilterHeaderName = "X-Pagination-Filter"

	// LimitDefault - лимит по умолчанию
	LimitDefault = uint64(20)

	// PageDefault - страница по умолчанию
	PageDefault = uint64(1)

	// SortDirectionAsc - сортировка по возрастанию
	SortDirectionAsc = "ASC"

	// SortDirectionDesc - сортировка по убыванию
	SortDirectionDesc = "DESC"

	// FilterEq - равно
	FilterEq = "EQ"

	// FilterNeq - не равно
	FilterNeq = "Neq"

	// FilterGt - больше
	FilterGt = "Gt"

	// FilterGte - больше или равно
	FilterGte = "Gte"

	// FilterLt - меньше
	FilterLt = "Lt"

	// FilterLte - меньше или равно
	FilterLte = "Lte"

	// FilterLIKE - LIKE
	FilterLIKE = "LIKE"

	// FilterIN - IN
	FilterIN = "IN"
)

Variables

View Source
var (
	// SortDirectionToQuerySort Связь между repository.SortDirection и строковым представлением.
	SortDirectionToQuerySort = linker.NewLinker[repository.SortDirection, string](
		linker.Link(repository.ASC, SortDirectionAsc),
		linker.Link(repository.DESC, SortDirectionDesc),
	)

	// QuerySortToSortDirection Связь между строковым представлением и repository.SortDirection.
	QuerySortToSortDirection = linker.NewLinker[string, repository.SortDirection](
		linker.Link(strings.ToLower(SortDirectionAsc), repository.ASC),
		linker.Link(strings.ToLower(SortDirectionDesc), repository.DESC),
		linker.KeyStringNormalizer[repository.SortDirection](),
	)

	// ComparableToComparableQuery Связь между repository.Comparable и строковым представлением.
	ComparableToComparableQuery = linker.NewLinker[repository.Comparable, string](
		linker.Link(repository.Eq, FilterEq),
		linker.Link(repository.Neq, FilterNeq),
		linker.Link(repository.Gt, FilterGt),
		linker.Link(repository.Gte, FilterGte),
		linker.Link(repository.Lt, FilterLt),
		linker.Link(repository.Lte, FilterLte),
		linker.Link(repository.LIKE, FilterLIKE),
		linker.Link(repository.IN, FilterIN),
	)

	// QueryComparableToComparable Связь между строковым представлением и repository.Comparable.
	QueryComparableToComparable = linker.NewLinker[string, repository.Comparable](
		linker.Link(FilterEq, repository.Eq),
		linker.Link(FilterNeq, repository.Neq),
		linker.Link(FilterGt, repository.Gt),
		linker.Link(FilterGte, repository.Gte),
		linker.Link(FilterLt, repository.Lt),
		linker.Link(FilterLte, repository.Lte),
		linker.Link(FilterLIKE, repository.LIKE),
		linker.Link(FilterIN, repository.IN),
		linker.KeyStringNormalizer[repository.Comparable](),
	)
)

Functions

func NewFilter

func NewFilter(logger compogo.Logger, columns ...string) httpServer.Middleware

NewFilter создаёт middleware для извлечения фильтров из запроса. Поддерживает формат: "column:value:EQ;column2:value2:LIKE"

func NewPage

func NewPage(logger compogo.Logger) httpServer.Middleware

NewPage создаёт middleware для извлечения номера страницы из запроса.

func NewPaginationLimit

func NewPaginationLimit(logger compogo.Logger) httpServer.Middleware

NewPaginationLimit создаёт middleware для извлечения лимита из запроса.

func NewSort

func NewSort(logger compogo.Logger, defaultSort *repository.Sort, columns ...string) httpServer.Middleware

NewSort создаёт middleware для извлечения сортировки из запроса. Поддерживает формат: "column:asc;column2:desc"

Types

This section is empty.

Jump to

Keyboard shortcuts

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