/**
 * Service utilities for name normalization and auto-discovery
 */

/**
 * Normalize service name to kebab-case format
 * Examples:
 * - webApi -> web-api
 * - dataIngestion -> data-ingestion
 * - data-pipeline -> data-pipeline (unchanged)
 */
export function normalizeServiceName(serviceName: string): string {
  // Handle camelCase to kebab-case conversion
  const kebabCase = serviceName.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();

  return kebabCase;
}

/**
 * Generate cache prefix for a service
 */
export function generateCachePrefix(serviceName: string): string {
  const normalized = normalizeServiceName(serviceName);
  return `cache:${normalized}`;
}

/**
 * Generate full queue name with service namespace
 */
export function getFullQueueName(serviceName: string, handlerName: string): string {
  const normalized = normalizeServiceName(serviceName);
  // Use {service_handler} format for Dragonfly optimization and BullMQ compatibility
  return `{${normalized}_${handlerName}}`;
}

/**
 * Parse a full queue name into service and handler
 */
export function parseQueueName(fullQueueName: string): { service: string; handler: string } | null {
  // Match pattern {service_handler}
  const match = fullQueueName.match(/^\{([^_]+)_([^}]+)\}$/);

  if (!match || !match[1] || !match[2]) {
    return null;
  }

  return {
    service: match[1],
    handler: match[2],
  };
}
