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+
152238func 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 {
157243func 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+ }
0 commit comments