package event_ingress import ( "fmt" "os" "strings" "github.com/gin-gonic/gin" "github.com/go-admin-team/go-admin-core/sdk" "go-admin/app/bell/integration/machine_identity" ) func RegisterRuntime(engine *gin.Engine) error { enabled := strings.EqualFold(strings.TrimSpace(os.Getenv("BELL_EVENT_INGRESS_ENABLED")), "true") if !enabled { return nil } db := sdk.Runtime.GetDbByKey("") if db == nil { return fmt.Errorf("Bell event ingress database is unavailable") } if !db.Migrator().HasTable(&ReplayToken{}) || !db.Migrator().HasTable(&EvidenceStatus{}) { return fmt.Errorf("Bell event ingress migration is required") } registry, err := machine_identity.LoadRegistry(os.Getenv("BELL_MACHINE_PRINCIPAL_REGISTRY"), "yovision-bell") if err != nil { return fmt.Errorf("load Bell machine identity registry: %w", err) } var resolver EvidenceRefresher if strings.EqualFold(strings.TrimSpace(os.Getenv("BELL_EVIDENCE_RESOLVER_ENABLED")), "true") { resolver, err = LoadEvidenceClient(os.Getenv) if err != nil { return fmt.Errorf("load Bell evidence resolver: %w", err) } } handler := Handler{DB: db, Enabled: true, Resolver: resolver, Verifier: machine_identity.Verifier{Registry: registry, Replay: PersistentReplayStore{DB: db}}} engine.POST("/v1/events", handler.Post) return nil }