// src/server/config/modules.ts
// Configuration for enabled backend modules with Feature Toggling support

/**
 * Module configuration interface
 */
interface ModuleConfig {
  name: string;
  path: string;
  enabled: boolean;
}

/**
 * List of all available backend modules
 * Set enabled: false to disable a module without removing it from the codebase
 */
export const modules: ModuleConfig[] = [
  { name: 'auth', path: './features/auth', enabled: true },
  { name: 'system', path: './features/system', enabled: true },
  { name: 'notes', path: './features/notes', enabled: true },
  { name: 'paymaster', path: './features/paymaster', enabled: true },
  { name: 'approval', path: './features/approval', enabled: true },
  { name: 'blacklist', path: './features/blacklist', enabled: true },
  { name: 'reference_books', path: './features/reference_books', enabled: true },
  { name: 'inventory', path: './features/reference_books', enabled: true },
  { name: 'contractors', path: './features/reference_books', enabled: true },
  { name: 'access', path: './features/reference_books', enabled: true },
  { name: 'equipment', path: './features/reference_books', enabled: true },
  { name: 'notifications', path: './features/notifications', enabled: true },
  { name: 'schedule', path: './features/schedule', enabled: true },
  { name: 'rooms', path: './features/rooms', enabled: true },
  { name: 'personnel', path: './features/personnel', enabled: true },
  { name: 'operations', path: './features/operations', enabled: true },
  { name: 'tasks', path: './features/tasks', enabled: true },
];

/**
 * Get list of enabled modules
 */
export function getEnabledModules(): ModuleConfig[] {
  return modules.filter((module) => module.enabled);
}

/**
 * Get list of disabled modules
 */
export function getDisabledModules(): ModuleConfig[] {
  return modules.filter((module) => !module.enabled);
}
