61 lines
1.3 KiB
Go
61 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"git.toki-labs.com/toki/rara/packages/go/config"
|
|
"git.toki-labs.com/toki/rara/packages/go/database"
|
|
"git.toki-labs.com/toki/rara/packages/go/httpserver"
|
|
"git.toki-labs.com/toki/rara/packages/go/observability"
|
|
"git.toki-labs.com/toki/rara/packages/go/rag"
|
|
"github.com/spf13/cobra"
|
|
"go.uber.org/fx"
|
|
)
|
|
|
|
func main() {
|
|
if err := newCommand().Execute(); err != nil {
|
|
_, _ = fmt.Fprintln(os.Stderr, err)
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
|
|
func newCommand() *cobra.Command {
|
|
var configPath string
|
|
command := &cobra.Command{
|
|
Use: "rara-rag-api",
|
|
Short: "Run the RARA online RAG API",
|
|
RunE: func(*cobra.Command, []string) error {
|
|
cfg, err := config.Load(configPath)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
app := fx.New(
|
|
fx.Supply(cfg),
|
|
fx.Provide(
|
|
observability.NewLogger,
|
|
observability.NewRegistry,
|
|
database.New,
|
|
httpserver.NewMux,
|
|
databaseReadiness,
|
|
rag.NewReleaseResolver,
|
|
rag.NewEngine,
|
|
rag.NewHandler,
|
|
),
|
|
fx.Invoke(
|
|
observability.SetupTracing,
|
|
rag.Register,
|
|
httpserver.Start,
|
|
),
|
|
)
|
|
app.Run()
|
|
return nil
|
|
},
|
|
}
|
|
command.Flags().StringVar(&configPath, "config", "configs/rag-api.yaml", "configuration file")
|
|
return command
|
|
}
|
|
|
|
func databaseReadiness(store *database.Store) httpserver.Readiness {
|
|
return store.Ready
|
|
}
|