store: keep an in-memory index of routes, support lookup by path

Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
This commit is contained in:
Andrea Luzzardi
2021-03-25 19:08:52 -07:00
parent 1e8cef9ad0
commit e08e64b311
8 changed files with 329 additions and 111 deletions

View File

@@ -23,10 +23,13 @@ var downCmd = &cobra.Command{
Run: func(cmd *cobra.Command, args []string) {
lg := logger.New()
ctx := lg.WithContext(cmd.Context())
store := dagger.DefaultStore()
store, err := dagger.DefaultStore()
if err != nil {
lg.Fatal().Err(err).Msg("failed to load store")
}
routeName := getRouteName(ctx)
route, err := store.LookupRoute(ctx, routeName, nil)
st, err := store.LookupRouteByName(ctx, routeName)
if err != nil {
lg.
Fatal().
@@ -34,6 +37,13 @@ var downCmd = &cobra.Command{
Str("routeName", routeName).
Msg("failed to lookup route")
}
route, err := dagger.NewRoute(st)
if err != nil {
lg.
Fatal().
Err(err).
Msg("failed to initialize route")
}
// TODO: Implement options: --no-cache
if err := route.Down(ctx, nil); err != nil {

View File

@@ -23,7 +23,10 @@ var listCmd = &cobra.Command{
Run: func(cmd *cobra.Command, args []string) {
lg := logger.New()
ctx := lg.WithContext(cmd.Context())
store := dagger.DefaultStore()
store, err := dagger.DefaultStore()
if err != nil {
lg.Fatal().Err(err).Msg("failed to load store")
}
routes, err := store.ListRoutes(ctx)
if err != nil {
@@ -33,8 +36,8 @@ var listCmd = &cobra.Command{
Msg("cannot list routes")
}
for _, name := range routes {
fmt.Println(name)
for _, r := range routes {
fmt.Println(r.Name)
}
},
}

View File

@@ -22,23 +22,36 @@ var newCmd = &cobra.Command{
Run: func(cmd *cobra.Command, args []string) {
lg := logger.New()
ctx := lg.WithContext(cmd.Context())
store := dagger.DefaultStore()
store, err := dagger.DefaultStore()
if err != nil {
lg.Fatal().Err(err).Msg("failed to load store")
}
upRouteFlag := viper.GetBool("up")
routeName := getRouteName(ctx)
st := &dagger.RouteState{
Name: getRouteName(ctx),
}
// TODO: Implement options: --layout-*, --setup
route, err := store.CreateRoute(ctx, routeName, nil)
err = store.CreateRoute(ctx, st)
if err != nil {
lg.Fatal().Err(err).Msg("failed to create route")
}
lg.
Info().
Str("routeId", route.ID()).
Str("routeName", routeName).
Str("routeId", st.ID).
Str("routeName", st.Name).
Msg("route created")
route, err := dagger.NewRoute(st)
if err != nil {
lg.
Fatal().
Err(err).
Msg("failed to initialize route")
}
if upRouteFlag {
routeUp(ctx, route)
}

View File

@@ -24,10 +24,13 @@ var queryCmd = &cobra.Command{
Run: func(cmd *cobra.Command, args []string) {
lg := logger.New()
ctx := lg.WithContext(cmd.Context())
store := dagger.DefaultStore()
store, err := dagger.DefaultStore()
if err != nil {
lg.Fatal().Err(err).Msg("failed to load store")
}
routeName := getRouteName(ctx)
route, err := store.LookupRoute(ctx, routeName, nil)
st, err := store.LookupRouteByName(ctx, routeName)
if err != nil {
lg.
Fatal().
@@ -36,6 +39,14 @@ var queryCmd = &cobra.Command{
Msg("failed to lookup route")
}
route, err := dagger.NewRoute(st)
if err != nil {
lg.
Fatal().
Err(err).
Msg("failed to initialize route")
}
expr := args[0]
out, err := route.Query(ctx, expr, nil)

View File

@@ -23,10 +23,13 @@ var upCmd = &cobra.Command{
Run: func(cmd *cobra.Command, args []string) {
lg := logger.New()
ctx := lg.WithContext(cmd.Context())
store := dagger.DefaultStore()
store, err := dagger.DefaultStore()
if err != nil {
lg.Fatal().Err(err).Msg("failed to load store")
}
routeName := getRouteName(ctx)
route, err := store.LookupRoute(ctx, routeName, nil)
st, err := store.LookupRouteByName(ctx, routeName)
if err != nil {
lg.
Fatal().
@@ -35,6 +38,14 @@ var upCmd = &cobra.Command{
Msg("failed to lookup route")
}
route, err := dagger.NewRoute(st)
if err != nil {
lg.
Fatal().
Err(err).
Msg("failed to initialize route")
}
// TODO: Implement options: --no-cache
routeUp(ctx, route)
},