32 lines
475 B
Go
32 lines
475 B
Go
package integration
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
type Integration interface {
|
|
Integration()
|
|
}
|
|
|
|
type OnStartup interface {
|
|
Integration
|
|
OnStartup(ctx context.Context) error
|
|
}
|
|
|
|
func RunOnStartup(ctx context.Context, integrations []Integration) error {
|
|
for _, it := range integrations {
|
|
onStartup, ok := it.(OnStartup)
|
|
if !ok {
|
|
continue
|
|
}
|
|
|
|
if err := onStartup.OnStartup(ctx); err != nil {
|
|
return errors.WithStack(err)
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|