Mercurial > gemma
comparison pkg/controllers/common.go @ 5712:6270951dda28 revive-cleanup
/interface{}/any/
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Tue, 20 Feb 2024 22:37:51 +0100 |
parents | 5f47eeea988d |
children |
comparison
equal
deleted
inserted
replaced
5711:2dd155cc95ec | 5712:6270951dda28 |
---|---|
23 "gemma.intevation.de/gemma/pkg/log" | 23 "gemma.intevation.de/gemma/pkg/log" |
24 ) | 24 ) |
25 | 25 |
26 type ( | 26 type ( |
27 filterNode interface { | 27 filterNode interface { |
28 serialize(*strings.Builder, *[]interface{}) | 28 serialize(*strings.Builder, *[]any) |
29 } | 29 } |
30 | 30 |
31 filterTerm struct { | 31 filterTerm struct { |
32 format string | 32 format string |
33 args []interface{} | 33 args []any |
34 } | 34 } |
35 | 35 |
36 filterNot struct { | 36 filterNot struct { |
37 filterNode | 37 filterNode |
38 } | 38 } |
39 | 39 |
40 filterAnd []filterNode | 40 filterAnd []filterNode |
41 filterOr []filterNode | 41 filterOr []filterNode |
42 ) | 42 ) |
43 | 43 |
44 func (ft *filterTerm) serialize(stmt *strings.Builder, args *[]interface{}) { | 44 func (ft *filterTerm) serialize(stmt *strings.Builder, args *[]any) { |
45 indices := make([]interface{}, len(ft.args)) | 45 indices := make([]any, len(ft.args)) |
46 for i := range indices { | 46 for i := range indices { |
47 indices[i] = len(*args) + i + 1 | 47 indices[i] = len(*args) + i + 1 |
48 } | 48 } |
49 fmt.Fprintf(stmt, ft.format, indices...) | 49 fmt.Fprintf(stmt, ft.format, indices...) |
50 *args = append(*args, (*ft).args...) | 50 *args = append(*args, (*ft).args...) |
51 } | 51 } |
52 | 52 |
53 func buildFilterTerm(format string, args ...interface{}) *filterTerm { | 53 func buildFilterTerm(format string, args ...any) *filterTerm { |
54 return &filterTerm{format: format, args: args} | 54 return &filterTerm{format: format, args: args} |
55 } | 55 } |
56 | 56 |
57 func (fa filterAnd) serialize(stmt *strings.Builder, args *[]interface{}) { | 57 func (fa filterAnd) serialize(stmt *strings.Builder, args *[]any) { |
58 for i, node := range fa { | 58 for i, node := range fa { |
59 if i > 0 { | 59 if i > 0 { |
60 stmt.WriteString(" AND ") | 60 stmt.WriteString(" AND ") |
61 } | 61 } |
62 stmt.WriteByte('(') | 62 stmt.WriteByte('(') |
63 node.serialize(stmt, args) | 63 node.serialize(stmt, args) |
64 stmt.WriteByte(')') | 64 stmt.WriteByte(')') |
65 } | 65 } |
66 } | 66 } |
67 | 67 |
68 func (fo filterOr) serialize(stmt *strings.Builder, args *[]interface{}) { | 68 func (fo filterOr) serialize(stmt *strings.Builder, args *[]any) { |
69 for i, node := range fo { | 69 for i, node := range fo { |
70 if i > 0 { | 70 if i > 0 { |
71 stmt.WriteString(" OR ") | 71 stmt.WriteString(" OR ") |
72 } | 72 } |
73 stmt.WriteByte('(') | 73 stmt.WriteByte('(') |
74 node.serialize(stmt, args) | 74 node.serialize(stmt, args) |
75 stmt.WriteByte(')') | 75 stmt.WriteByte(')') |
76 } | 76 } |
77 } | 77 } |
78 | 78 |
79 func (fn *filterNot) serialize(stmt *strings.Builder, args *[]interface{}) { | 79 func (fn *filterNot) serialize(stmt *strings.Builder, args *[]any) { |
80 stmt.WriteString("NOT (") | 80 stmt.WriteString("NOT (") |
81 fn.filterNode.serialize(stmt, args) | 81 fn.filterNode.serialize(stmt, args) |
82 stmt.WriteByte(')') | 82 stmt.WriteByte(')') |
83 } | 83 } |
84 | 84 |