mirror of
https://github.com/rancher/steve.git
synced 2025-06-28 07:47:13 +00:00
62 lines
1.7 KiB
Go
62 lines
1.7 KiB
Go
package switchschema
|
|
|
|
import (
|
|
"github.com/rancher/apiserver/pkg/types"
|
|
)
|
|
|
|
type Store struct {
|
|
Schema *types.APISchema
|
|
}
|
|
|
|
func (e *Store) Delete(apiOp *types.APIRequest, oldSchema *types.APISchema, id string) (types.APIObject, error) {
|
|
obj, err := e.Schema.Store.Delete(apiOp, e.Schema, id)
|
|
obj.Type = oldSchema.ID
|
|
return obj, err
|
|
}
|
|
|
|
func (e *Store) ByID(apiOp *types.APIRequest, oldSchema *types.APISchema, id string) (types.APIObject, error) {
|
|
obj, err := e.Schema.Store.ByID(apiOp, e.Schema, id)
|
|
obj.Type = oldSchema.ID
|
|
return obj, err
|
|
}
|
|
|
|
func (e *Store) List(apiOp *types.APIRequest, oldSchema *types.APISchema) (types.APIObjectList, error) {
|
|
obj, err := e.Schema.Store.List(apiOp, e.Schema)
|
|
for i := range obj.Objects {
|
|
obj.Objects[i].Type = oldSchema.ID
|
|
}
|
|
return obj, err
|
|
}
|
|
|
|
func (e *Store) Create(apiOp *types.APIRequest, oldSchema *types.APISchema, data types.APIObject) (types.APIObject, error) {
|
|
obj, err := e.Schema.Store.Create(apiOp, e.Schema, data)
|
|
obj.Type = oldSchema.ID
|
|
return obj, err
|
|
}
|
|
|
|
func (e *Store) Update(apiOp *types.APIRequest, oldSchema *types.APISchema, data types.APIObject, id string) (types.APIObject, error) {
|
|
obj, err := e.Schema.Store.Update(apiOp, e.Schema, data, id)
|
|
obj.Type = oldSchema.ID
|
|
return obj, err
|
|
}
|
|
|
|
func (e *Store) Watch(apiOp *types.APIRequest, oldSchema *types.APISchema, wr types.WatchRequest) (chan types.APIEvent, error) {
|
|
c, err := e.Schema.Store.Watch(apiOp, e.Schema, wr)
|
|
if err != nil || c == nil {
|
|
return c, err
|
|
}
|
|
|
|
result := make(chan types.APIEvent)
|
|
go func() {
|
|
defer close(result)
|
|
for obj := range c {
|
|
if obj.Object.Type == e.Schema.ID {
|
|
obj.Object.Type = oldSchema.ID
|
|
}
|
|
result <- obj
|
|
}
|
|
}()
|
|
|
|
return result, nil
|
|
}
|