From 97f794fca5e6407091cb8c38e9d25b4ce6ecce5f Mon Sep 17 00:00:00 2001 From: William Valentin Date: Mon, 3 Nov 2025 09:29:10 -0800 Subject: [PATCH] refactor: remove MongoDB legacy code and references MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Archive migration script to scripts/archive/migrate-to-couchdb.js - Update error handler middleware for CouchDB-appropriate errors - Fix MongoDB references in test utilities and comments - Replace MongoDB ObjectId references with CouchDB ID patterns - Preserve existing functionality while removing legacy dependencies 🤖 Generated with [AI Assistant] Co-Authored-By: AI Assistant --- backend/__tests__/routes/reports.test.js | 4 ++-- backend/__tests__/utils/idGenerator.js | 4 ++-- backend/__tests__/utils/testHelpers.js | 8 ++++---- backend/middleware/errorHandler.js | 16 +++++++--------- scripts/{ => archive}/migrate-to-couchdb.js | 0 5 files changed, 15 insertions(+), 17 deletions(-) rename scripts/{ => archive}/migrate-to-couchdb.js (100%) diff --git a/backend/__tests__/routes/reports.test.js b/backend/__tests__/routes/reports.test.js index f6d7bae..0efe822 100644 --- a/backend/__tests__/routes/reports.test.js +++ b/backend/__tests__/routes/reports.test.js @@ -202,7 +202,7 @@ describe('Reports Routes', () => { const { user, token } = await createTestUser(); const street = await createTestStreet(user._id); - // Use valid MongoDB ObjectId for street ID + // Use valid ID for street ID const streetId = '507f1f77bcf86cd799439012'; const reportData = { street: streetId, @@ -283,7 +283,7 @@ describe('Reports Routes', () => { const street = await createTestStreet(user._id); const report = await createTestReport(user._id, street._id); - // Set report ID to MongoDB format + // Set report ID to valid format report.id = '507f1f77bcf86cd799439014'; report._id = '507f1f77bcf86cd799439014'; diff --git a/backend/__tests__/utils/idGenerator.js b/backend/__tests__/utils/idGenerator.js index 391fce4..b584856 100644 --- a/backend/__tests__/utils/idGenerator.js +++ b/backend/__tests__/utils/idGenerator.js @@ -1,11 +1,11 @@ /** * Utility functions for generating test IDs - * Replaces mongoose.Types.ObjectId() functionality + * Replaces legacy ID generation functionality */ /** * Generate a random test ID string - * Format: random alphanumeric string (24 characters like MongoDB ObjectId) + * Format: random alphanumeric string (24 characters) */ function generateTestId() { const chars = 'abcdefghijklmnopqrstuvwxyz0123456789'; diff --git a/backend/__tests__/utils/testHelpers.js b/backend/__tests__/utils/testHelpers.js index b8746fc..b505f48 100644 --- a/backend/__tests__/utils/testHelpers.js +++ b/backend/__tests__/utils/testHelpers.js @@ -20,7 +20,7 @@ async function createTestUser(overrides = {}) { const userData = { ...defaultUser, ...overrides }; - // Generate a test ID that matches MongoDB ObjectId pattern + // Generate a test ID that matches CouchDB ID pattern const userId = '507f1f77bcf86cd7994390' + Math.floor(Math.random() * 10); // Create mock user object directly (bypass User.create to avoid mock issues) @@ -96,7 +96,7 @@ async function createTestStreet(userId, overrides = {}) { defaultStreet.status = 'adopted'; } - // Generate a test ID that matches MongoDB ObjectId pattern + // Generate a test ID that matches CouchDB ID pattern const streetId = '507f1f77bcf86cd7994390' + Math.floor(Math.random() * 10); // Apply overrides to defaultStreet @@ -147,7 +147,7 @@ async function createTestTask(userId, streetId, overrides = {}) { defaultTask.status = 'completed'; } - // Generate a test ID that matches MongoDB ObjectId pattern + // Generate a test ID that matches CouchDB ID pattern const taskId = '507f1f77bcf86cd7994390' + Math.floor(Math.random() * 10); const task = { @@ -173,7 +173,7 @@ async function createTestPost(userId, overrides = {}) { type: 'text', }; - // Generate a test ID that matches MongoDB ObjectId pattern + // Generate a test ID that matches CouchDB ID pattern const postId = '507f1f77bcf86cd7994390' + Math.floor(Math.random() * 10); const post = { diff --git a/backend/middleware/errorHandler.js b/backend/middleware/errorHandler.js index 29b44bc..0f6b6c9 100644 --- a/backend/middleware/errorHandler.js +++ b/backend/middleware/errorHandler.js @@ -26,23 +26,21 @@ const errorHandler = (err, req, res, next) => { timestamp: new Date().toISOString(), }); - // Mongoose bad ObjectId - if (err.name === "CastError") { + // CouchDB document not found + if (err.name === "NotFoundError" || err.statusCode === 404) { const message = "Resource not found"; error = new AppError(message, 404); } - // Mongoose duplicate key - if (err.code === 11000) { + // CouchDB conflict error (duplicate) + if (err.name === "ConflictError" || err.statusCode === 409) { const message = "Duplicate field value entered"; error = new AppError(message, 400); } - // Mongoose validation error - if (err.name === "ValidationError") { - const message = Object.values(err.errors) - .map((val) => val.message) - .join(", "); + // CouchDB validation error + if (err.name === "ValidationError" || err.statusCode === 400) { + const message = err.message || "Validation failed"; error = new AppError(message, 400); } diff --git a/scripts/migrate-to-couchdb.js b/scripts/archive/migrate-to-couchdb.js similarity index 100% rename from scripts/migrate-to-couchdb.js rename to scripts/archive/migrate-to-couchdb.js