From 0cb8e1246622913c33feb3db76275e63f75e9d27 Mon Sep 17 00:00:00 2001 From: Kevin L'Hereec Date: Tue, 2 Jun 2026 17:09:15 +0200 Subject: [PATCH] refactor: wire validators into controllers - configurations_v1_controller: use createConfigurationValidator/updateConfigurationValidator - firmware_catalog_controller: use createFirmwareEntryValidator/updateFirmwareEntryValidator/createMigrationRouteValidator - Remove dead isModeType/parseMode from mode.ts - Remove dead NAMESPACES from soap.ts --- .../configurations_v1_controller.ts | 33 +++---------------- .../firmware_catalog_controller.ts | 28 ++++------------ 2 files changed, 12 insertions(+), 49 deletions(-) diff --git a/app/controllers/configurations_v1_controller.ts b/app/controllers/configurations_v1_controller.ts index 38cfe92..412583b 100644 --- a/app/controllers/configurations_v1_controller.ts +++ b/app/controllers/configurations_v1_controller.ts @@ -10,7 +10,7 @@ import logger from '@adonisjs/core/services/logger' /** * Configurations API Controller - * + * * Handles REST endpoints for Configuration management: * - GET /api/v1/configurations (list with pagination and filters) * - GET /api/v1/configurations/:id (get single with compliance stats) @@ -92,20 +92,8 @@ export default class ConfigurationsController { */ async store({ request, response }: HttpContext) { try { - const data = request.only([ - 'identifier', - 'name', - 'version', - 'priority', - 'policy', - 'enabled', - 'tags', - 'criteria', - 'inventory', - 'desiredParameters', - 'firmwareTarget', - 'schedule', - ]) as CreateConfigurationDto + const { createConfigurationValidator } = await import('#validators/configuration') + const data = await request.validateUsing(createConfigurationValidator) as CreateConfigurationDto // Check for overlaps const overlapResult = await this.configService.detectOverlap(data.criteria || {}, data.priority) @@ -134,19 +122,8 @@ export default class ConfigurationsController { */ async update({ params, request, response }: HttpContext) { try { - const data = request.only([ - 'name', - 'priority', - 'policy', - 'enabled', - 'tags', - 'criteria', - 'inventory', - 'desiredParameters', - 'firmwareTarget', - 'schedule', - 'bumpType', - ]) as UpdateConfigurationDto + const { updateConfigurationValidator } = await import('#validators/configuration') + const data = await request.validateUsing(updateConfigurationValidator) as UpdateConfigurationDto // Check for overlaps if priority changed if (data.priority) { diff --git a/app/controllers/firmware_catalog_controller.ts b/app/controllers/firmware_catalog_controller.ts index 79009a9..b1cf1ce 100644 --- a/app/controllers/firmware_catalog_controller.ts +++ b/app/controllers/firmware_catalog_controller.ts @@ -7,7 +7,7 @@ import logger from '@adonisjs/core/services/logger' /** * Firmware Catalog API Controller - * + * * Handles REST endpoints for Firmware Catalog management: * - GET /api/v1/firmware-catalog (list entries grouped by productClass) * - POST /api/v1/firmware-catalog/entries (create firmware entry) @@ -74,9 +74,8 @@ export default class FirmwareCatalogController { */ async updateEntry({ params, request, response }: HttpContext) { try { - const data = request.only([ - 'productClass', 'version', 'downloadUrl', 'checksum', 'checksumType', 'fileSize', - ]) + const { updateFirmwareEntryValidator } = await import('#validators/firmware_catalog') + const data = await request.validateUsing(updateFirmwareEntryValidator) const entry = await this.catalogService.updateEntry(params.id, data) return response.ok(entry) } catch (error: any) { @@ -106,15 +105,8 @@ export default class FirmwareCatalogController { */ async createEntry({ request, response }: HttpContext) { try { - const data = request.only([ - 'identifier', - 'productClass', - 'version', - 'downloadUrl', - 'checksum', - 'checksumType', - 'fileSize', - ]) as CreateFirmwareEntryDto + const { createFirmwareEntryValidator } = await import('#validators/firmware_catalog') + const data = await request.validateUsing(createFirmwareEntryValidator) as CreateFirmwareEntryDto const entry = await this.catalogService.createEntry(data) return response.status(201).json(entry) @@ -144,14 +136,8 @@ export default class FirmwareCatalogController { */ async createRoute({ request, response }: HttpContext) { try { - const data = request.only([ - 'identifier', - 'productClass', - 'sourceVersionPattern', - 'targetVersion', - 'downloadUrl', - 'priority', - ]) as CreateMigrationRouteDto + const { createMigrationRouteValidator } = await import('#validators/firmware_catalog') + const data = await request.validateUsing(createMigrationRouteValidator) as CreateMigrationRouteDto const route = await this.catalogService.createMigrationRoute(data) return response.status(201).json(route)