-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtypes.go
82 lines (65 loc) · 3.43 KB
/
types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package f8n
import (
"regexp"
kitModuleAns "github.com/webnice/kit/v4/module/ans"
)
var (
// Регулярное выражение описывающее все возможные теги для разбора карты условий сложной фильтрации.
rexTag = regexp.MustCompile(`(?mi)(\(|\)|:and:|:or:)`)
// OriginAll Справочник всех значений сущностей тегов сложной фильтрации.
OriginAll = []Origin{
OriginFiltration, OriginOperatorBracket, OriginAnd, OriginOr,
}
)
// Объект сущности, реализующий интерфейс Interface.
type impl struct {
FieldOnly []string `json:"field"` // Имена обрабатываемых полей. Пусто - обрабатываются все поля.
Datatype Datatype `json:"field_type"` // Карта типов данных полей.
Remap Remap `json:"remap"` // Переопределение наименований полей.
Offset uint64 `json:"offset"` // Лимит - позиция выборки.
Limit uint64 `json:"limit"` // Лимит - размер выборки.
By []Direction `json:"by"` // Опции сортировки результата выборки.
Filter []Filter `json:"filter"` // Простая фильтрация.
Tie TieMode `json:"tie,omitempty"` // Устаревший режим простой фильтрации.
Map *Map `json:"map"` // Сложная фильтрация разобранная в карту DOM объектов.
}
// ParseError Ошибки возникшие в результате разбора входящих параметров.
type ParseError struct {
Ei error
Ev []kitModuleAns.RestErrorField
}
// OnErrorFunc Функция, вызываемая при возникновении ошибки при разборе запроса.
// Функция получит:
// []byte - Готовые данные с описанием ошибки.
// error - Интерфейс возникшей ошибки.
type OnErrorFunc func([]byte, error)
// FieldType Тип данных для поля.
type FieldType string
// Datatype Тип данных для карты типов данных полей.
type Datatype map[string]FieldType
// Remap Тип данных для переопределения наименований полей.
type Remap map[string]string
// SqlDialect Тип диалекта базы данных.
type SqlDialect string
// Direction Сортировка.
type Direction struct {
Field string `json:"field"`
By ByDirection `json:"direction"`
}
// ByDirection Тип направления сортировки.
type ByDirection string
// Filter Структура настроек фильтрации.
type Filter struct {
Field string `json:"field"`
Method FilterMethod `json:"method"`
Value FilterValue `json:"value"`
}
// FilterMethod Тип способа сравнения.
type FilterMethod string
// FilterValue Значение фильтрации.
type FilterValue struct {
Source string `json:"source"` // Исходное значение фильтрации.
Type FieldType `json:"type"` // Тип значения.
}
// TieMode Устаревший режим работы простой фильтрации.
type TieMode string