mirror of
https://github.com/hatchet-dev/hatchet.git
synced 2026-01-26 02:29:08 -06:00
* feat: check security service * feat: propegate version * feat: with ident * fix: lint * chore: generate * fix: change domain * fix: panic recover * fix: migrations * fix: hash * fix: dont check in tests
49 lines
971 B
Go
49 lines
971 B
Go
package api
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/hatchet-dev/hatchet/api/v1/server/run"
|
|
"github.com/hatchet-dev/hatchet/pkg/config/loader"
|
|
)
|
|
|
|
func Start(cf *loader.ConfigLoader, interruptCh <-chan interface{}, version string) error {
|
|
// init the repository
|
|
configCleanup, sc, err := cf.LoadServerConfig(version)
|
|
if err != nil {
|
|
return fmt.Errorf("error loading server config: %w", err)
|
|
}
|
|
|
|
var teardown []func() error
|
|
|
|
runner := run.NewAPIServer(sc)
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
apiCleanup, err := runner.Run()
|
|
if err != nil {
|
|
return fmt.Errorf("error starting API server: %w", err)
|
|
}
|
|
|
|
teardown = append(teardown, apiCleanup)
|
|
teardown = append(teardown, configCleanup)
|
|
|
|
sc.Logger.Debug().Msgf("api started successfully")
|
|
|
|
<-interruptCh
|
|
|
|
sc.Logger.Debug().Msgf("api is shutting down...")
|
|
|
|
for _, teardown := range teardown {
|
|
if err := teardown(); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
sc.Logger.Debug().Msgf("api successfully shut down")
|
|
|
|
return nil
|
|
}
|