( presets []database.GetTemplatePresetsWithPrebuildsRow, prebuildSchedules []database.TemplateVersionPresetPrebuildSchedule, runningPrebuilds []database.GetRunningPrebuiltWorkspacesRow, prebuildsInProgress []database.CountInProgressPrebuildsRow, pendingPrebuilds []database.CountPendingNonActivePrebuildsRow, backoffs []database.GetPresetsBackoffRow, hardLimitedPresets []database.GetPresetsAtFailureLimitRow, clock quartz.Clock, logger slog.Logger, )
| 26 | } |
| 27 | |
| 28 | func NewGlobalSnapshot( |
| 29 | presets []database.GetTemplatePresetsWithPrebuildsRow, |
| 30 | prebuildSchedules []database.TemplateVersionPresetPrebuildSchedule, |
| 31 | runningPrebuilds []database.GetRunningPrebuiltWorkspacesRow, |
| 32 | prebuildsInProgress []database.CountInProgressPrebuildsRow, |
| 33 | pendingPrebuilds []database.CountPendingNonActivePrebuildsRow, |
| 34 | backoffs []database.GetPresetsBackoffRow, |
| 35 | hardLimitedPresets []database.GetPresetsAtFailureLimitRow, |
| 36 | clock quartz.Clock, |
| 37 | logger slog.Logger, |
| 38 | ) GlobalSnapshot { |
| 39 | hardLimitedPresetsMap := make(map[uuid.UUID]database.GetPresetsAtFailureLimitRow, len(hardLimitedPresets)) |
| 40 | for _, preset := range hardLimitedPresets { |
| 41 | hardLimitedPresetsMap[preset.PresetID] = preset |
| 42 | } |
| 43 | |
| 44 | return GlobalSnapshot{ |
| 45 | Presets: presets, |
| 46 | PrebuildSchedules: prebuildSchedules, |
| 47 | RunningPrebuilds: runningPrebuilds, |
| 48 | PrebuildsInProgress: prebuildsInProgress, |
| 49 | PendingPrebuilds: pendingPrebuilds, |
| 50 | Backoffs: backoffs, |
| 51 | HardLimitedPresetsMap: hardLimitedPresetsMap, |
| 52 | clock: clock, |
| 53 | logger: logger, |
| 54 | } |
| 55 | } |
| 56 | |
| 57 | func (s GlobalSnapshot) FilterByPreset(presetID uuid.UUID) (*PresetSnapshot, error) { |
| 58 | preset, found := slice.Find(s.Presets, func(preset database.GetTemplatePresetsWithPrebuildsRow) bool { |
no outgoing calls