From d0aef1eafd0129bc584eb9ddc04b0c1b3342117c Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Tue, 12 Dec 2017 08:48:17 -0700 Subject: [PATCH] Add store helpers --- api/access/list.go | 57 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 api/access/list.go diff --git a/api/access/list.go b/api/access/list.go new file mode 100644 index 00000000..2c3a3d88 --- /dev/null +++ b/api/access/list.go @@ -0,0 +1,57 @@ +package access + +import ( + "fmt" + + "github.com/rancher/norman/parse/builder" + "github.com/rancher/norman/types" + "github.com/rancher/norman/types/convert" +) + +func ByID(context *types.APIContext, version *types.APIVersion, typeName string, id string, into interface{}) error { + schema := context.Schemas.Schema(version, typeName) + if schema == nil { + return fmt.Errorf("failed to find schema " + typeName) + } + + item, err := schema.Store.ByID(context, schema, id) + if err != nil { + return err + } + + b := builder.NewBuilder(context) + b.Version = version + + item, err = b.Construct(schema, item, builder.List) + if err != nil { + return err + } + + return convert.ToObj(item, into) +} + +func List(context *types.APIContext, version *types.APIVersion, typeName string, opts types.QueryOptions, into interface{}) error { + schema := context.Schemas.Schema(version, typeName) + if schema == nil { + return fmt.Errorf("failed to find schema " + typeName) + } + + data, err := schema.Store.List(context, schema, opts) + if err != nil { + return err + } + + b := builder.NewBuilder(context) + b.Version = version + + var newData []map[string]interface{} + for _, item := range data { + item, err = b.Construct(schema, item, builder.List) + if err != nil { + return err + } + newData = append(newData, item) + } + + return convert.ToObj(newData, into) +}