import { Injectable } from '@nestjs/common'; import * as svc from '../../services/adminService'; import { getAdminUserDefaults, setAdminUserDefaults } from '../../services/settingsService'; import { invalidateMcpSessions } from '../../mcp'; import { getPreferencesMatrix, setAdminPreferences } from '../../services/notificationPreferencesService'; /** * Thin Nest wrapper around the existing admin service (+ the settings, * MCP-session and notification-preference helpers the legacy route used). All * business logic, audit-relevant return shapes and the addon/MCP invalidation * reuse the legacy code unchanged. */ @Injectable() export class AdminService { // Users listUsers() { return svc.listUsers(); } createUser(body: unknown) { return svc.createUser(body as Parameters[0]); } updateUser(id: string, body: unknown) { return svc.updateUser(id, body as Parameters[1]); } deleteUser(id: string, actingUserId: number) { return svc.deleteUser(id, actingUserId); } getStats() { return svc.getStats(); } getPermissions() { return svc.getPermissions(); } savePermissions(permissions: Parameters[0]) { return svc.savePermissions(permissions); } getAuditLog(query: { limit?: string; offset?: string }) { return svc.getAuditLog(query); } getOidcSettings() { return svc.getOidcSettings(); } updateOidcSettings(body: unknown) { return svc.updateOidcSettings(body as Parameters[0]); } saveDemoBaseline() { return svc.saveDemoBaseline(); } getGithubReleases(perPage: string, page: string) { return svc.getGithubReleases(perPage, page); } checkVersion() { return svc.checkVersion(); } // Invites listInvites() { return svc.listInvites(); } createInvite(userId: number, body: unknown) { return svc.createInvite(userId, body as Parameters[1]); } deleteInvite(id: string) { return svc.deleteInvite(id); } // Feature toggles getBagTracking() { return svc.getBagTracking(); } updateBagTracking(enabled: unknown) { return svc.updateBagTracking(enabled as boolean); } getPlacesPhotos() { return svc.getPlacesPhotos(); } updatePlacesPhotos(enabled: boolean) { return svc.updatePlacesPhotos(enabled); } getPlacesAutocomplete() { return svc.getPlacesAutocomplete(); } updatePlacesAutocomplete(enabled: boolean) { return svc.updatePlacesAutocomplete(enabled); } getPlacesDetails() { return svc.getPlacesDetails(); } updatePlacesDetails(enabled: boolean) { return svc.updatePlacesDetails(enabled); } getCollabFeatures() { return svc.getCollabFeatures(); } updateCollabFeatures(body: unknown) { return svc.updateCollabFeatures(body as Parameters[0]); } // Packing templates listPackingTemplates() { return svc.listPackingTemplates(); } getPackingTemplate(id: string) { return svc.getPackingTemplate(id); } createPackingTemplate(name: unknown, userId: number) { return svc.createPackingTemplate(name as string, userId); } updatePackingTemplate(id: string, body: unknown) { return svc.updatePackingTemplate(id, body as Parameters[1]); } deletePackingTemplate(id: string) { return svc.deletePackingTemplate(id); } createTemplateCategory(templateId: string, name: unknown) { return svc.createTemplateCategory(templateId, name as string); } updateTemplateCategory(templateId: string, catId: string, body: unknown) { return svc.updateTemplateCategory(templateId, catId, body as Parameters[2]); } deleteTemplateCategory(templateId: string, catId: string) { return svc.deleteTemplateCategory(templateId, catId); } createTemplateItem(templateId: string, catId: string, name: unknown) { return svc.createTemplateItem(templateId, catId, name as string); } updateTemplateItem(itemId: string, body: unknown) { return svc.updateTemplateItem(itemId, body as Parameters[1]); } deleteTemplateItem(itemId: string) { return svc.deleteTemplateItem(itemId); } // Addons + tokens + sessions listAddons() { return svc.listAddons(); } updateAddon(id: string, body: unknown) { return svc.updateAddon(id, body as Parameters[1]); } listMcpTokens() { return svc.listMcpTokens(); } deleteMcpToken(id: string) { return svc.deleteMcpToken(id); } listOAuthSessions() { return svc.listOAuthSessions(); } revokeOAuthSession(id: string) { return svc.revokeOAuthSession(id); } rotateJwtSecret() { return svc.rotateJwtSecret(); } invalidateMcpSessions() { invalidateMcpSessions(); } // Settings + notification preference helpers (non-admin-service modules) getAdminUserDefaults() { return getAdminUserDefaults(); } setAdminUserDefaults(body: Record) { return setAdminUserDefaults(body); } getPreferencesMatrix(userId: number, role: string) { return getPreferencesMatrix(userId, role, 'admin'); } setAdminPreferences(userId: number, body: unknown) { return setAdminPreferences(userId, body as Parameters[1]); } }