aboutsummaryrefslogtreecommitdiffstats
path: root/query.go
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2026-05-12 16:45:00 -0400
committerSam Anthony <sam@samanthony.xyz>2026-05-12 16:45:00 -0400
commit520f392ca5207f5364bbed501615613e3485b84b (patch)
tree9f569676ef804f145935d9540f156d949e67e759 /query.go
parent9010ebe8a581fb9db7bc6e97d40ff062fb18495f (diff)
downloadlulu-520f392ca5207f5364bbed501615613e3485b84b.zip
implement GET /print-jobs
Diffstat (limited to 'query.go')
-rw-r--r--query.go45
1 files changed, 38 insertions, 7 deletions
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 {