From 913d5beda6ad40abd24bccb7b3c74dca0da8c944 Mon Sep 17 00:00:00 2001 From: Katarzyna Gorska Date: Thu, 21 Dec 2017 14:20:39 +0100 Subject: [PATCH] Implement Select in database package 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: Idb5fe308cf7cac1dd638c31834b1499ef678822c Signed-off-by: Katarzyna Gorska --- artifacts/database/database.go | 6 ++++++ artifacts/database/database_test.go | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/artifacts/database/database.go b/artifacts/database/database.go index d39a421..faf3774 100644 --- a/artifacts/database/database.go +++ b/artifacts/database/database.go @@ -92,6 +92,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 } diff --git a/artifacts/database/database_test.go b/artifacts/database/database_test.go index 544e7d3..7c6e812 100644 --- a/artifacts/database/database_test.go +++ b/artifacts/database/database_test.go @@ -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), ) }) }) -- 2.7.4