database: add GetNamespace
Provides the functionality to retrieve a namespace from his name.
This commit is contained in:
parent
b2519a044a
commit
5856c9fcb6
@ -76,6 +76,9 @@ type Datastore interface {
|
||||
// ListNamespaces returns the entire list of known Namespaces.
|
||||
ListNamespaces() ([]Namespace, error)
|
||||
|
||||
//GetNamespace returns the namespace with name namespaceName
|
||||
GetNamespace(namespaceName string) (*Namespace, error)
|
||||
|
||||
// InsertLayer stores a Layer in the database.
|
||||
//
|
||||
// A Layer is uniquely identified by its Name.
|
||||
|
@ -20,6 +20,7 @@ import "time"
|
||||
// The default behavior of each method is to simply panic.
|
||||
type MockDatastore struct {
|
||||
FctListNamespaces func() ([]Namespace, error)
|
||||
FctGetNamespace func(namespaceName string) (*Namespace, error)
|
||||
FctInsertLayer func(Layer) error
|
||||
FctFindLayer func(name string, withFeatures, withVulnerabilities bool) (Layer, error)
|
||||
FctDeleteLayer func(name string) error
|
||||
@ -49,6 +50,13 @@ func (mds *MockDatastore) ListNamespaces() ([]Namespace, error) {
|
||||
panic("required mock function not implemented")
|
||||
}
|
||||
|
||||
func (mds *MockDatastore) GetNamespace(namespaceName string) (*Namespace, error) {
|
||||
if mds.FctGetNamespace != nil {
|
||||
return mds.FctGetNamespace(namespaceName)
|
||||
}
|
||||
panic("required mock function not implemented")
|
||||
}
|
||||
|
||||
func (mds *MockDatastore) InsertLayer(layer Layer) error {
|
||||
if mds.FctInsertLayer != nil {
|
||||
return mds.FctInsertLayer(layer)
|
||||
|
@ -73,3 +73,12 @@ func (pgSQL *pgSQL) ListNamespaces() (namespaces []database.Namespace, err error
|
||||
|
||||
return namespaces, err
|
||||
}
|
||||
|
||||
func (pgSQL *pgSQL) GetNamespace(namespaceName string) (*database.Namespace, error) {
|
||||
var ns database.Namespace
|
||||
err := pgSQL.QueryRow(getNamespace, namespaceName).Scan(&ns.ID, &ns.Name, &ns.VersionFormat)
|
||||
if err != nil {
|
||||
return nil, handleError("getNamespace", err)
|
||||
}
|
||||
return &ns, nil
|
||||
}
|
||||
|
@ -72,3 +72,22 @@ func TestListNamespace(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetNamespace(t *testing.T) {
|
||||
datastore, err := openDatabaseForTest("GetNamespace", true)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
defer datastore.Close()
|
||||
|
||||
// Invalid Namespace.
|
||||
ns0, err := datastore.GetNamespace("Not present")
|
||||
assert.NotNil(t, err)
|
||||
assert.Nil(t, ns0)
|
||||
|
||||
// Valid Namespace.
|
||||
ns1, err := datastore.GetNamespace("debian:7")
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, ns1.Name, "debian:7")
|
||||
}
|
||||
|
@ -40,6 +40,7 @@ const (
|
||||
|
||||
searchNamespace = `SELECT id FROM Namespace WHERE name = $1`
|
||||
listNamespace = `SELECT id, name, version_format FROM Namespace`
|
||||
getNamespace = `SELECT id, name, version_format FROM Namespace WHERE name = $1`
|
||||
|
||||
// feature.go
|
||||
soiFeature = `
|
||||
|
Loading…
Reference in New Issue
Block a user