package mutator

import (
	"context"

	"github.com/databricks/cli/bundle"
	"github.com/databricks/cli/libs/diag"
	"github.com/databricks/databricks-sdk-go/service/jobs"
)

type defaultQueueing struct{}

func DefaultQueueing() bundle.Mutator {
	return &defaultQueueing{}
}

func (m *defaultQueueing) Name() string {
	return "DefaultQueueing"
}

// Enable queueing for jobs by default, following the behavior from API 2.2+.
// As of 2024-04, we're still using API 2.1 which has queueing disabled by default.
// This mutator makes sure queueing is enabled by default before we can adopt API 2.2.
func (m *defaultQueueing) Apply(ctx context.Context, b *bundle.Bundle) diag.Diagnostics {
	r := b.Config.Resources
	for i := range r.Jobs {
		if r.Jobs[i].JobSettings == nil {
			r.Jobs[i].JobSettings = &jobs.JobSettings{}
		}
		if r.Jobs[i].Queue != nil {
			continue
		}
		r.Jobs[i].Queue = &jobs.QueueSettings{
			Enabled: true,
		}
	}
	return nil
}