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
|
||
|
}
|