package activityhistory

import (
	"time"

	"github.com/vektah/gqlparser/v2/gqlerror"

	"edge-infra.dev/pkg/edge/api/bsl/types"
)

type Option func(a *Activity)

func WithInput(input string) Option {
	return func(a *Activity) {
		a.input = input
	}
}

func WithAction(action string) Option {
	return func(a *Activity) {
		a.action = action
	}
}

func WithUserCtx(user *types.AuthUser) Option {
	return func(a *Activity) {
		a.userCtx = user
	}
}

func WithStatus(status string) Option {
	return func(a *Activity) {
		a.status = status
	}
}

func WithTenant(tenant string) Option {
	return func(a *Activity) {
		a.tenantEdgeID = tenant
	}
}

func WithErrors(errs gqlerror.List) Option {
	return func(a *Activity) {
		if errs.Error() != "" {
			err := errs.Error()
			a.err = &err
		}
	}
}

func WithTimestamp(timestamp time.Time) Option {
	return func(a *Activity) {
		a.timestamp = timestamp.UTC().String()
	}
}

func WithBatchID(id string) Option {
	return func(a *Activity) {
		a.batchID = &id
	}
}