API extensions: Route listerens (#887)

This commit is contained in:
Denis Makogon
2018-03-26 20:25:13 +03:00
committed by Reed Allman
parent 7810b3cb9b
commit 6393cf6777
4 changed files with 140 additions and 2 deletions

View File

@@ -6,16 +6,18 @@ import (
"github.com/fnproject/fn/api/models"
)
func NewDatastore(ds models.Datastore, al AppListener) models.Datastore {
func NewDatastore(ds models.Datastore, al AppListener, rl RouteListener) models.Datastore {
return &extds{
Datastore: ds,
al: al,
rl: rl,
}
}
type extds struct {
models.Datastore
al AppListener
rl RouteListener
}
func (e *extds) GetApp(ctx context.Context, appName string) (*models.App, error) {
@@ -93,3 +95,45 @@ func (e *extds) GetApps(ctx context.Context, filter *models.AppFilter) ([]*model
err = e.al.AfterAppsList(ctx, apps)
return apps, err
}
func (e *extds) InsertRoute(ctx context.Context, route *models.Route) (*models.Route, error) {
err := e.rl.BeforeRouteCreate(ctx, route)
if err != nil {
return nil, err
}
route, err = e.Datastore.InsertRoute(ctx, route)
if err != nil {
return nil, err
}
err = e.rl.AfterRouteCreate(ctx, route)
return route, err
}
func (e *extds) UpdateRoute(ctx context.Context, route *models.Route) (*models.Route, error) {
err := e.rl.BeforeRouteUpdate(ctx, route)
if err != nil {
return nil, err
}
route, err = e.Datastore.UpdateRoute(ctx, route)
if err != nil {
return nil, err
}
err = e.rl.AfterRouteUpdate(ctx, route)
return route, err
}
func (e *extds) RemoveRoute(ctx context.Context, appName string, routePath string) error {
err := e.rl.BeforeRouteDelete(ctx, appName, routePath)
if err != nil {
return err
}
err = e.Datastore.RemoveRoute(ctx, appName, routePath)
if err != nil {
return err
}
return e.rl.AfterRouteDelete(ctx, appName, routePath)
}