From 520f392ca5207f5364bbed501615613e3485b84b Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Tue, 12 May 2026 16:45:00 -0400 Subject: implement GET /print-jobs --- query.go | 45 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 7 deletions(-) (limited to 'query.go') diff --git a/query.go b/query.go index cf56bdd..3611958 100644 --- a/query.go +++ b/query.go @@ -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 { -- cgit v1.2.3