zdravko/pkg/temporal/temporal.go

61 lines
1 KiB
Go

package temporal
import (
"log/slog"
"github.com/mentos1386/zdravko/internal/config"
"github.com/temporalio/ui-server/v2/server"
t "go.temporal.io/server/temporal"
)
type Temporal struct {
server t.Server
uiServer *server.Server
}
func NewTemporal(cfg *config.TemporalConfig) (*Temporal, error) {
logger := slog.Default()
serverConfig := NewServerConfig(cfg)
tokenKeyProvider := TokenKeyProvider{config: cfg}
server, err := NewServer(logger, serverConfig, &tokenKeyProvider)
if err != nil {
return nil, err
}
uiConfig := NewUiConfig(cfg)
uiServer, err := NewUiServer(uiConfig)
if err != nil {
return nil, err
}
return &Temporal{
server: server,
uiServer: uiServer,
}, nil
}
func (t *Temporal) Name() string {
return "Temporal UI and Server"
}
func (t *Temporal) Start() error {
go func() {
err := t.uiServer.Start()
if err != nil {
panic(err)
}
}()
return t.server.Start()
}
func (t *Temporal) Stop() error {
t.uiServer.Stop()
err := t.server.Stop()
if err != nil {
return err
}
return nil
}