field.go

 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}