summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Mazuruk <a.mazuruk@samsung.com>2018-09-11 18:19:53 +0200
committerPawel Wieczorek <p.wieczorek2@samsung.com>2018-09-18 15:44:42 +0200
commit9cf5ff9b17b18efe058720c173d6a65aa5eeb112 (patch)
tree9d3f58e9d146e41cb336a675ecc31c2931992588
parentc83fdd482503d316d3fc97e354070a326826c01e (diff)
downloadweles-9cf5ff9b17b18efe058720c173d6a65aa5eeb112.tar.gz
weles-9cf5ff9b17b18efe058720c173d6a65aa5eeb112.tar.bz2
weles-9cf5ff9b17b18efe058720c173d6a65aa5eeb112.zip
Unify ArtifactFilter returned by server
Due to how json array marshalling works in go: Having following struct: type A struct{ Key1 []string Key2 []string } When following empty JSON was sent: { Key1: [], Key2: [] } We would receive a struct: Key1, Key2 - one element slice with empty string If we would send: { Key2: [] } We would receive a struct: Key1 - empty slice Key2 - one element slice with empty string This commit unifies empty values returned by server to always be empty slice. Change-Id: I24ff156dc98f5a1e160858cc3ce02ecd44387129 Signed-off-by: Alexander Mazuruk <a.mazuruk@samsung.com>
-rw-r--r--server/artifact_lister_handler.go31
1 files changed, 27 insertions, 4 deletions
diff --git a/server/artifact_lister_handler.go b/server/artifact_lister_handler.go
index f1d447e..9d0cd02 100644
--- a/server/artifact_lister_handler.go
+++ b/server/artifact_lister_handler.go
@@ -31,10 +31,7 @@ func (a *APIDefaults) ArtifactLister(params artifacts.ArtifactListerParams) midd
}
paginator = setArtifactPaginator(params, a.PageLimit)
}
- filter := weles.ArtifactFilter{}
- if params.ArtifactFilterAndSort.Filter != nil {
- filter = *params.ArtifactFilterAndSort.Filter
- }
+ filter := setArtifactFilter(params.ArtifactFilterAndSort.Filter)
sorter := setArtifactSorter(params.ArtifactFilterAndSort.Sorter)
artifactInfoReceived, listInfo, err := a.Managers.AM.ListArtifact(filter, sorter, paginator)
@@ -123,6 +120,32 @@ func responderArtifact200(listInfo weles.ListInfo, paginator weles.ArtifactPagin
return
}
+// setArtifactFilter adjusts filter's 0 values to be consistent and acceptable by the artifacts db
+// That is []string with only 1 empty element should be removed.
+func setArtifactFilter(fi *weles.ArtifactFilter) (fo weles.ArtifactFilter) {
+ if fi != nil {
+ if len(fi.JobID) > 0 {
+ fo.JobID = fi.JobID
+ }
+ if len(fi.Alias) > 0 {
+ if !(len(fi.Alias) == 1 && fi.Alias[0] == "") {
+ fo.Alias = fi.Alias
+ }
+ }
+ if len(fi.Status) > 0 {
+ if !(len(fi.Status) == 1 && fi.Status[0] == "") {
+ fo.Status = fi.Status
+ }
+ }
+ if len(fi.Type) > 0 {
+ if !(len(fi.Type) == 1 && fi.Type[0] == "") {
+ fo.Type = fi.Type
+ }
+ }
+ }
+ return
+}
+
// setArtifactSorter sets default sorter values.
func setArtifactSorter(si *weles.ArtifactSorter) (so weles.ArtifactSorter) {
if si == nil {