Implement Select in database package 38/163638/4
authorAleksander Mistewicz <a.mistewicz@samsung.com>
Tue, 12 Dec 2017 13:51:56 +0000 (14:51 +0100)
committerKatarzyna Gorska <k.gorska@samsung.com>
Fri, 15 Dec 2017 11:16:00 +0000 (12:16 +0100)
Storage's Select allows to use one method for fetching
elements from ArtifactDB. Requested artifacts can be selected by
JobID, ArtifactType, ArtifactStatus or ArtifactAlias.

Change-Id: I58d53d99808b64e836163c1fb8a3876ecf15c611

artifacts/database/database.go
artifacts/database/database_test.go

index 3245c89..73915e1 100644 (file)
@@ -90,6 +90,12 @@ func (aDB *ArtifactDB) Select(arg interface{}) (artifacts []ArtifactInfo, err er
        switch arg.(type) {
        case JobID:
                query = "select * from artifacts where JobID = ?"
+       case ArtifactType:
+               query = "select * from artifacts where Type = ?"
+       case ArtifactAlias:
+               query = "select * from artifacts where Alias = ?"
+       case ArtifactStatus:
+               query = "select * from artifacts where Status = ?"
        default:
                return nil, ErrUnsupportedQueryType
        }
index 544e7d3..7c6e812 100644 (file)
@@ -185,13 +185,19 @@ var _ = Describe("ArtifactDB", func() {
                                        Expect(result).To(Equal(expectedResult))
                                }
                        },
-                       // type supported by select.
+                       // types supported by select.
                        Entry("select JobID", artifact.JobID, nil, artifact),
+                       Entry("select Type", weles.AM_YAMLFILE, nil, aYamlFailed),
+                       Entry("select Status", weles.AM_READY, nil, aImageReady),
+                       Entry("select Alias", artifact.Alias, nil, artifact),
                        // type bool is not supported by select.
                        Entry("select unsupported value", true, ErrUnsupportedQueryType),
                        // test query itsef.
                        Entry("select multiple entries for JobID", aImageReady.JobID, nil, aImageReady, aYamlFailed),
                        Entry("select no entries for invalid JobID", invalidJob, nil),
+                       Entry("select multiple entries for Type", weles.AM_IMAGEFILE, nil, artifact, aImageReady),
+                       Entry("select multiple entries for Alias", aImageReady.Alias, nil, aImageReady, aYamlFailed),
+                       Entry("select multiple entries for Status", weles.AM_FAILED, nil, aYamlFailed, aTestFailed),
                )
        })
 })