1// Copyright 2020 Jebbs. All rights reserved.
2// Use of this source code is governed by MIT
3// license that can be found in the LICENSE file.
4
5package rule
6
7// FieldType is the field type
8type FieldType int
9
10// FieldTypes
11const (
12 FieldTypeOrder FieldType = iota
13 FieldTypeMerge
14)
15
16// Field is the field for rules
17type Field struct {
18 Type FieldType
19 Key string // field key
20 Remove bool // whether to remove the field after rules applied
21}
22
23// OrderBy is the order by field for slice sort rule
24func OrderBy(key string) Field {
25 return Field{
26 Type: FieldTypeOrder,
27 Key: key,
28 Remove: false,
29 }
30}
31
32// MergeBy is the merge by field for slice sort rule
33func MergeBy(key string) Field {
34 return Field{
35 Type: FieldTypeMerge,
36 Key: key,
37 Remove: false,
38 }
39}
40
41// OrderByAndRemove is the order by field for slice merge rule
42func OrderByAndRemove(key string) Field {
43 return Field{
44 Type: FieldTypeOrder,
45 Key: key,
46 Remove: true,
47 }
48}
49
50// MergeByAndRemove is the merge by field for slice merge rule
51func MergeByAndRemove(key string) Field {
52 return Field{
53 Type: FieldTypeMerge,
54 Key: key,
55 Remove: true,
56 }
57}