rara/apps/rag-api/cmd/rag-api/main.go
toki fdc86c7ff4
Some checks are pending
ci / validate (push) Waiting to run
initial commit
2026-07-18 18:41:17 +09:00

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
}