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 returns the entire list of known Namespaces.
|
||||||
ListNamespaces() ([]Namespace, error)
|
ListNamespaces() ([]Namespace, error)
|
||||||
|
|
||||||
|
//GetNamespace returns the namespace with name namespaceName
|
||||||
|
GetNamespace(namespaceName string) (*Namespace, error)
|
||||||
|
|
||||||
// InsertLayer stores a Layer in the database.
|
// InsertLayer stores a Layer in the database.
|
||||||
//
|
//
|
||||||
// A Layer is uniquely identified by its Name.
|
// A Layer is uniquely identified by its Name.
|
||||||
|
@ -20,6 +20,7 @@ import "time"
|
|||||||
// The default behavior of each method is to simply panic.
|
// The default behavior of each method is to simply panic.
|
||||||
type MockDatastore struct {
|
type MockDatastore struct {
|
||||||
FctListNamespaces func() ([]Namespace, error)
|
FctListNamespaces func() ([]Namespace, error)
|
||||||
|
FctGetNamespace func(namespaceName string) (*Namespace, error)
|
||||||
FctInsertLayer func(Layer) error
|
FctInsertLayer func(Layer) error
|
||||||
FctFindLayer func(name string, withFeatures, withVulnerabilities bool) (Layer, error)
|
FctFindLayer func(name string, withFeatures, withVulnerabilities bool) (Layer, error)
|
||||||
FctDeleteLayer func(name string) error
|
FctDeleteLayer func(name string) error
|
||||||
@ -49,6 +50,13 @@ func (mds *MockDatastore) ListNamespaces() ([]Namespace, error) {
|
|||||||
panic("required mock function not implemented")
|
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 {
|
func (mds *MockDatastore) InsertLayer(layer Layer) error {
|
||||||
if mds.FctInsertLayer != nil {
|
if mds.FctInsertLayer != nil {
|
||||||
return mds.FctInsertLayer(layer)
|
return mds.FctInsertLayer(layer)
|
||||||
|
@ -73,3 +73,12 @@ func (pgSQL *pgSQL) ListNamespaces() (namespaces []database.Namespace, err error
|
|||||||
|
|
||||||
return namespaces, err
|
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`
|
searchNamespace = `SELECT id FROM Namespace WHERE name = $1`
|
||||||
listNamespace = `SELECT id, name, version_format FROM Namespace`
|
listNamespace = `SELECT id, name, version_format FROM Namespace`
|
||||||
|
getNamespace = `SELECT id, name, version_format FROM Namespace WHERE name = $1`
|
||||||
|
|
||||||
// feature.go
|
// feature.go
|
||||||
soiFeature = `
|
soiFeature = `
|
||||||
|
Loading…
Reference in New Issue
Block a user