Files
hatchet/pkg/repository/repository.go
T
abelanger5 925b2654c8 feat: workflow run metrics view (#912)
* feat: add callbacks for workflow run completed

* add tenant id to resolve row

* add finishedBefore, finishedAfter to workflow runs query

* add more callbacks

* feat: tenant ids and loggers in callback

* feat: workflow run metrics frontend

* fix: frontend build
2024-09-27 07:38:15 -04:00

82 lines
2.0 KiB
Go

package repository
import (
"github.com/rs/zerolog"
)
type APIRepository interface {
Health() HealthRepository
APIToken() APITokenRepository
Event() EventAPIRepository
Log() LogsAPIRepository
Tenant() TenantAPIRepository
TenantAlertingSettings() TenantAlertingAPIRepository
TenantInvite() TenantInviteRepository
Workflow() WorkflowAPIRepository
WorkflowRun() WorkflowRunAPIRepository
JobRun() JobRunAPIRepository
StepRun() StepRunAPIRepository
Slack() SlackRepository
SNS() SNSRepository
Step() StepRepository
Worker() WorkerAPIRepository
UserSession() UserSessionRepository
User() UserRepository
SecurityCheck() SecurityCheckRepository
WebhookWorker() WebhookWorkerRepository
}
type EngineRepository interface {
Health() HealthRepository
APIToken() EngineTokenRepository
Dispatcher() DispatcherEngineRepository
Event() EventEngineRepository
GetGroupKeyRun() GetGroupKeyRunEngineRepository
JobRun() JobRunEngineRepository
StepRun() StepRunEngineRepository
Step() StepRepository
Tenant() TenantEngineRepository
TenantAlertingSettings() TenantAlertingEngineRepository
Ticker() TickerEngineRepository
Worker() WorkerEngineRepository
Workflow() WorkflowEngineRepository
WorkflowRun() WorkflowRunEngineRepository
StreamEvent() StreamEventsEngineRepository
Log() LogsEngineRepository
RateLimit() RateLimitEngineRepository
WebhookWorker() WebhookWorkerEngineRepository
}
type EntitlementsRepository interface {
TenantLimit() TenantLimitRepository
}
func BoolPtr(b bool) *bool {
return &b
}
func StringPtr(s string) *string {
return &s
}
type Callback[T any] func(string, T) error
func (c Callback[T]) Do(l *zerolog.Logger, tenantId string, v T) {
// wrap in panic recover to avoid panics in the callback
defer func() {
if r := recover(); r != nil {
if l != nil {
l.Error().Interface("panic", r).Msg("panic in callback")
}
}
}()
go func() {
err := c(tenantId, v)
if err != nil {
l.Error().Err(err).Msg("callback failed")
}
}()
}