Files
hatchet/api/v1/server/oas/transformers/tenant.go
abelanger5 f2c6bc1f44 feat: tenant partitioning (#649)
* feat: tenant partitioning

* fix: rebalance inactive partitions, split into separate partitioner

* fix: shutdown partitioner scheduler properly

* update config options

* fix: config options linting
2024-06-26 21:06:51 +00:00

88 lines
2.6 KiB
Go

package transformers
import (
"strings"
"github.com/hatchet-dev/hatchet/api/v1/server/oas/gen"
"github.com/hatchet-dev/hatchet/pkg/repository/prisma/db"
"github.com/hatchet-dev/hatchet/pkg/repository/prisma/dbsqlc"
"github.com/hatchet-dev/hatchet/pkg/repository/prisma/sqlchelpers"
)
func ToTenant(tenant *db.TenantModel) *gen.Tenant {
return &gen.Tenant{
Metadata: *toAPIMetadata(tenant.ID, tenant.CreatedAt, tenant.UpdatedAt),
Name: tenant.Name,
Slug: tenant.Slug,
AnalyticsOptOut: &tenant.AnalyticsOptOut,
AlertMemberEmails: &tenant.AlertMemberEmails,
}
}
func ToTenantSqlc(tenant *dbsqlc.Tenant) *gen.Tenant {
return &gen.Tenant{
Metadata: *toAPIMetadata(sqlchelpers.UUIDToStr(tenant.ID), tenant.CreatedAt.Time, tenant.UpdatedAt.Time),
Name: tenant.Name,
Slug: tenant.Slug,
AnalyticsOptOut: &tenant.AnalyticsOptOut,
AlertMemberEmails: &tenant.AlertMemberEmails,
}
}
func ToTenantAlertingSettings(alerting *db.TenantAlertingSettingsModel) *gen.TenantAlertingSettings {
res := &gen.TenantAlertingSettings{
Metadata: *toAPIMetadata(alerting.ID, alerting.CreatedAt, alerting.UpdatedAt),
MaxAlertingFrequency: alerting.MaxFrequency,
EnableExpiringTokenAlerts: &alerting.EnableExpiringTokenAlerts,
EnableWorkflowRunFailureAlerts: &alerting.EnableWorkflowRunFailureAlerts,
EnableTenantResourceLimitAlerts: &alerting.EnableTenantResourceLimitAlerts,
}
if lastAlertedAt, ok := alerting.LastAlertedAt(); ok {
res.LastAlertedAt = &lastAlertedAt
}
return res
}
func ToTenantAlertEmailGroup(group *db.TenantAlertEmailGroupModel) *gen.TenantAlertEmailGroup {
emails := strings.Split(group.Emails, ",")
return &gen.TenantAlertEmailGroup{
Metadata: *toAPIMetadata(group.ID, group.CreatedAt, group.UpdatedAt),
Emails: emails,
}
}
func ToTenantResourcePolicy(_limits []*dbsqlc.TenantResourceLimit) *gen.TenantResourcePolicy {
limits := make([]gen.TenantResourceLimit, len(_limits))
for i, limit := range _limits {
var alarmValue int
if limit.AlarmValue.Valid {
alarmValue = int(limit.AlarmValue.Int32)
}
var window string
if limit.Window.Valid {
window = limit.Window.String
}
limits[i] = gen.TenantResourceLimit{
Metadata: *toAPIMetadata(sqlchelpers.UUIDToStr(limit.ID), limit.CreatedAt.Time, limit.UpdatedAt.Time),
Resource: gen.TenantResource(limit.Resource),
LimitValue: int(limit.LimitValue),
AlarmValue: &alarmValue,
Value: int(limit.Value),
Window: &window,
LastRefill: &limit.LastRefill.Time,
}
}
return &gen.TenantResourcePolicy{
Limits: limits,
}
}