package resolver

// This file will be automatically regenerated based on the schema, any resolver implementations
// will be copied through when generating and any unknown code will be moved to the end.
// Code generated by github.com/99designs/gqlgen version v0.17.45

import (
	"context"

	"edge-infra.dev/pkg/edge/api/graph/model"
)

// UpdateClusterSecret is the resolver for the updateClusterSecret field.
func (r *mutationResolver) UpdateClusterSecret(ctx context.Context, clusterEdgeID string, secretType model.ClusterSecretType, secretValue string) (bool, error) {
	isSecCompEnabled, err := r.GetBannerEdgeSecurityCompliance(ctx, clusterEdgeID)
	if err != nil {
		return false, err
	}
	if isSecCompEnabled {
		return false, ErrBannerOptedIntoCompliance
	}
	return r.updateClusterSecret(ctx, clusterEdgeID, secretType, secretValue)
}

// ReleaseClusterSecretLease is the resolver for the releaseClusterSecretLease field.
func (r *mutationResolver) ReleaseClusterSecretLease(ctx context.Context, clusterEdgeID string, secretType model.ClusterSecretType) (bool, error) {
	return r.removeUserFromClusterSecretLease(ctx, clusterEdgeID, secretType, "", "release")
}

// RevokeClusterSecretLease is the resolver for the revokeClusterSecretLease field.
func (r *mutationResolver) RevokeClusterSecretLease(ctx context.Context, clusterEdgeID string, secretType model.ClusterSecretType, username string) (bool, error) {
	return r.removeUserFromClusterSecretLease(ctx, clusterEdgeID, secretType, username, "revoke")
}

// ClusterSecret is the resolver for the clusterSecret field.
func (r *queryResolver) ClusterSecret(ctx context.Context, clusterEdgeID string, secretType model.ClusterSecretType, version *string) (string, error) {
	ver := "latest"
	if version != nil && *version != "" {
		ver = *version
	}
	return r.fetchClusterSecretPlainValue(ctx, clusterEdgeID, secretType, ver)
}

// ClusterSecretVersions is the resolver for the clusterSecretVersions field.
func (r *queryResolver) ClusterSecretVersions(ctx context.Context, clusterEdgeID string, secretType model.ClusterSecretType) ([]*model.ClusterSecretVersionInfo, error) {
	return r.fetchClusterSecretVersions(ctx, clusterEdgeID, secretType)
}

// ClusterSecretLease is the resolver for the clusterSecretLease field.
func (r *queryResolver) ClusterSecretLease(ctx context.Context, clusterEdgeID string, secretType model.ClusterSecretType) (*model.ClusterSecretLease, error) {
	return r.fetchClusterSecretLease(ctx, clusterEdgeID, secretType)
}