diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2026-05-12 16:45:00 -0400 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2026-05-12 16:45:00 -0400 |
| commit | 520f392ca5207f5364bbed501615613e3485b84b (patch) | |
| tree | 9f569676ef804f145935d9540f156d949e67e759 /query.go | |
| parent | 9010ebe8a581fb9db7bc6e97d40ff062fb18495f (diff) | |
| download | lulu-520f392ca5207f5364bbed501615613e3485b84b.zip | |
implement GET /print-jobs
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 { |