From: Alexander Mazuruk Date: Mon, 17 Sep 2018 15:20:38 +0000 (+0200) Subject: Unify JobFilter returned by server X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F34%2F189434%2F2;p=tools%2Fweles.git Unify JobFilter returned by server Further description in job_lister_handler.go file and Unify ArtifactFilter returned by server commit. Change-Id: Ieda839e30ee6be96187cb9551f9b4cb768298db9 Signed-off-by: Alexander Mazuruk --- diff --git a/server/job_lister_handler.go b/server/job_lister_handler.go index 0a2a662..03c4fa9 100644 --- a/server/job_lister_handler.go +++ b/server/job_lister_handler.go @@ -15,6 +15,8 @@ package server import ( + "time" + "github.com/go-openapi/runtime/middleware" "git.tizen.org/tools/weles" @@ -31,10 +33,7 @@ func (a *APIDefaults) JobLister(params jobs.JobListerParams) middleware.Responde } paginator = setJobPaginator(params, a.PageLimit) } - filter := weles.JobFilter{} - if params.JobFilterAndSort.Filter != nil { - filter = *params.JobFilterAndSort.Filter - } + filter := setJobFilter(params.JobFilterAndSort.Filter) sorter := setJobSorter(params.JobFilterAndSort.Sorter) jobInfoReceived, listInfo, err := a.Managers.JM.ListJobs(filter, sorter, paginator) @@ -127,6 +126,50 @@ func responder200(listInfo weles.ListInfo, paginator weles.JobPagination, return } +// setJobFilter adjusts filter's 0 values to be consistent and acceptable by controller. +// This is: +// for strfmt.DateTime elements normalizing 0 time as (0001-01-01T00:00:00.000Z) instead of +// Unix 0- 1970-01-01T00:00:00.000Z +// Controller treats slices with 0 len as empty, slices with lenght of 1 and empty value should not +// be passed to controller. +func setJobFilter(i *weles.JobFilter) (o weles.JobFilter) { + if i != nil { + if time.Time(i.CreatedBefore).Unix() != 0 { + o.CreatedBefore = i.CreatedBefore + } + if time.Time(i.CreatedAfter).Unix() != 0 { + o.CreatedAfter = i.CreatedAfter + } + if time.Time(i.UpdatedBefore).Unix() != 0 { + o.UpdatedBefore = i.UpdatedBefore + } + if time.Time(i.UpdatedAfter).Unix() != 0 { + o.UpdatedAfter = i.UpdatedAfter + } + if len(i.JobID) > 0 { + if !(len(i.JobID) == 1 && i.JobID[0] == 0) { + o.JobID = i.JobID + } + } + if len(i.Info) > 0 { + if !(len(i.Info) == 1 && i.Info[0] == "") { + o.Info = i.Info + } + } + if len(i.Name) > 0 { + if !(len(i.Name) == 1 && i.Name[0] == "") { + o.Name = i.Name + } + } + if len(i.Status) > 0 { + if !(len(i.Status) == 1 && i.Status[0] == "") { + o.Status = i.Status + } + } + } + return +} + func setJobPaginator(params jobs.JobListerParams, defaultPageLimit int32, ) (paginator weles.JobPagination) { paginator.Forward = true diff --git a/server/job_lister_handler_test.go b/server/job_lister_handler_test.go index 11847cd..41f74af 100644 --- a/server/job_lister_handler_test.go +++ b/server/job_lister_handler_test.go @@ -435,6 +435,7 @@ var _ = Describe("JobListerHandler", func() { filter, sorter, paginator2).Return(jobInfo2, listInfo2, nil).After(first) client2 := testserver.Client() + reqBody = filterSorterReqBody(filter, sorter, JSON) req2 := createRequest(reqBody, nextPage, "", JSON, JSON) req2.Close = true resp2, err := client2.Do(req2) @@ -603,6 +604,7 @@ var _ = Describe("JobListerHandler", func() { mockJobManager.EXPECT().ListJobs( filter, sorter, paginator2).Return(jobInfo2, listInfo2, nil).After(first) client2 := testserver.Client() + reqBody = filterSorterReqBody(filter, sorter, JSON) req2 := createRequest(reqBody, prevPage, "", JSON, JSON) req2.Close = true resp2, err := client2.Do(req2)