Skip to content

Commit 8f26029

Browse files
committed
🔇 silent changes: updated query model #9
1 parent 31a8514 commit 8f26029

File tree

2 files changed

+107
-0
lines changed

2 files changed

+107
-0
lines changed

query/query.go

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import (
66
"strings"
77
"time"
88

9+
"github.com/sivaosorg/govm/builder"
10+
"github.com/sivaosorg/govm/timex"
911
"github.com/sivaosorg/govm/utils"
1012
)
1113

@@ -149,6 +151,90 @@ func (i *IPageQuery) Json() string {
149151
return utils.ToJson(i)
150152
}
151153

154+
func NewDecision() *decision {
155+
i := &decision{}
156+
i.SetOn(time.Now())
157+
return i
158+
}
159+
160+
func WithDecision(value bool) *decision {
161+
i := NewDecision().SetEnabled(value).SetOn(time.Now())
162+
return i
163+
}
164+
165+
func (i *decision) SetEnabled(value bool) *decision {
166+
i.IsEnabled = value
167+
return i
168+
}
169+
170+
func (i *decision) SetValue(value interface{}) *decision {
171+
i.Value = value
172+
return i
173+
}
174+
175+
func (i *decision) SetOn(value time.Time) *decision {
176+
i.on = value
177+
return i
178+
}
179+
180+
func (i *decision) On() time.Time {
181+
return i.on
182+
}
183+
184+
func (i *decision) OnString() string {
185+
return i.on.Format(timex.TimeFormat20060102150405)
186+
}
187+
188+
func (i *decision) Json() string {
189+
return utils.ToJson(i)
190+
}
191+
192+
func NewModify() Modify {
193+
m := make(Modify)
194+
return m
195+
}
196+
197+
func (m Modify) Add(key string, value decision) Modify {
198+
m[key] = value
199+
return m
200+
}
201+
202+
func (m Modify) Addon(key string, value *decision) Modify {
203+
m[key] = *value
204+
return m
205+
}
206+
207+
func (m Modify) Remove(key string) Modify {
208+
delete(m, key)
209+
return m
210+
}
211+
212+
func (m Modify) RemoveAny(keys ...string) Modify {
213+
for _, v := range keys {
214+
delete(m, v)
215+
}
216+
return m
217+
}
218+
219+
func (m Modify) Size() int {
220+
return len(m)
221+
}
222+
223+
func (m Modify) Available() bool {
224+
return m.Size() > 0
225+
}
226+
227+
func (m Modify) Transform() map[string]interface{} {
228+
values := builder.NewMapBuilder()
229+
for k, e := range m {
230+
if !e.IsEnabled {
231+
continue
232+
}
233+
values.Add(k, e.Value)
234+
}
235+
return values.Build()
236+
}
237+
152238
func GetTotalPages(totalCount int, size int) int {
153239
d := float64(totalCount) / float64(size)
154240
return int(math.Ceil(d))
@@ -157,3 +243,16 @@ func GetTotalPages(totalCount int, size int) int {
157243
func GetHasMore(currentPage, totalCount, size int) bool {
158244
return currentPage < totalCount/size
159245
}
246+
247+
func Transforms(ms ...Modify) map[string]interface{} {
248+
values := builder.NewMapBuilder()
249+
for _, m := range ms {
250+
for k, e := range m {
251+
if !e.IsEnabled {
252+
continue
253+
}
254+
values.Add(k, e.Value)
255+
}
256+
}
257+
return values.Build()
258+
}

query/query_model.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,11 @@ type IPageQuery struct {
2222
EventAt timestampQuery `json:"event_at,omitempty"`
2323
IndexAt timestampQuery `json:"index_at,omitempty"`
2424
}
25+
26+
type decision struct {
27+
IsEnabled bool `json:"enabled"`
28+
Value interface{} `json:"value,omitempty"`
29+
on time.Time
30+
}
31+
32+
type Modify map[string]decision

0 commit comments

Comments
 (0)