diff options
Diffstat (limited to 'query.go')
| -rw-r--r-- | query.go | 45 |
1 files changed, 38 insertions, 7 deletions
@@ -1,6 +1,12 @@ package lulu -import "time" +import ( + "fmt" + "net/url" + "time" +) + +type PrintJobQuery func(*printJobQueries) type printJobQueries struct { creatAfter, creatBefore, modAfter, modBefore *time.Time @@ -9,15 +15,40 @@ type printJobQueries struct { excludeLineItems bool } -func parsePrintJobQueries(qs []PrintJobQuery) printJobQueries { - var q printJobQueries - for i := range qs { - qs[i](&q) +func (q *printJobQueries) apply(f ...PrintJobQuery) { + for i := range f { + f[i](q) } - return q } -type PrintJobQuery func(*printJobQueries) +func (q *printJobQueries) vals() url.Values { + v := url.Values{} + if q.creatAfter != nil { + v.Set("created_after", q.creatAfter.UTC().Format(time.RFC3339)) + } + if q.creatBefore != nil { + v.Set("created_before", q.creatBefore.UTC().Format(time.RFC3339)) + } + if q.modAfter != nil { + v.Set("modified_after", q.modAfter.UTC().Format(time.RFC3339)) + } + if q.modBefore != nil { + v.Set("modified_before", q.modBefore.UTC().Format(time.RFC3339)) + } + if q.status != nil { + v.Set("status", string(*q.status)) + } + if q.id != nil { + v.Set("id", fmt.Sprint(*q.id)) + } + if q.orderId != nil { + v.Set("order_id", fmt.Sprint(*q.orderId)) + } + if q.excludeLineItems { + v.Set("exclude_line_items", "true") + } + return v +} // Include only print jobs created after t. func FilterCreatedAfter(t time.Time) PrintJobQuery { |