package systemconfig

import (
	"context"
	"strconv"
	"strings"
)

func (s *Service) Update(ctx context.Context, actorID uint64, key string, req UpdateRequest, meta AuditMeta) (*ConfigDTO, error) {
	if s.repo == nil {
		return nil, ErrDependencyUnavailable
	}
	if key == "" || (req.Value == "" && key != "integration.paddle_ocr_token") {
		return nil, ErrInvalidConfig
	}
	if key == "listing.publish_cooldown_minutes" {
		minutes, err := strconv.Atoi(strings.TrimSpace(req.Value))
		if err != nil || minutes < 0 {
			return nil, ErrInvalidConfig
		}
	}
	return s.repo.Update(ctx, actorID, key, req, meta)
}
