From 0d3663f62d5202932f76c245c55c5474b5abfbdd Mon Sep 17 00:00:00 2001 From: Chandini Date: Wed, 10 Sep 2025 09:44:26 +0530 Subject: [PATCH] backend changes --- .../template-manager/src/models/feature.js | 23 +++++++++++++++++-- .../template-manager/src/routes/features.js | 22 ++++++++---------- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/services/template-manager/src/models/feature.js b/services/template-manager/src/models/feature.js index c86d9ce..cb4459b 100644 --- a/services/template-manager/src/models/feature.js +++ b/services/template-manager/src/models/feature.js @@ -132,8 +132,27 @@ class Feature { // Persist rules (aggregated JSONB) if provided try { - const rawRules = featureData.logic_rules ?? featureData.business_rules ?? []; - await FeatureBusinessRules.upsert(created.template_id, created.feature_id, rawRules); + let rawRules = []; + if (Array.isArray(featureData.logic_rules) && featureData.logic_rules.length > 0) { + rawRules = featureData.logic_rules; + } else if (Array.isArray(featureData.business_rules) && featureData.business_rules.length > 0) { + rawRules = featureData.business_rules; + } + + console.log('🔍 Feature.create - Raw rules data:', { + logic_rules: featureData.logic_rules, + business_rules: featureData.business_rules, + rawRules, + template_id: created.template_id, + feature_id: created.feature_id + }); + + if (rawRules.length > 0) { + await FeatureBusinessRules.upsert(created.template_id, created.feature_id, rawRules); + console.log('✅ Feature.create - Business rules stored successfully'); + } else { + console.log('⚠️ Feature.create - No business rules to store'); + } } catch (ruleErr) { // Do not block feature creation if rules fail; log and continue console.error('⚠️ Failed to persist aggregated business rules:', ruleErr.message); diff --git a/services/template-manager/src/routes/features.js b/services/template-manager/src/routes/features.js index 325d616..e1c3ecd 100644 --- a/services/template-manager/src/routes/features.js +++ b/services/template-manager/src/routes/features.js @@ -198,6 +198,12 @@ router.post('/', async (req, res) => { try { const featureData = req.body; console.log('🏗️ Creating new feature:', featureData.name); + console.log('🔍 API Route - Received feature data:', { + name: featureData.name, + logic_rules: featureData.logic_rules, + business_rules: featureData.business_rules, + template_id: featureData.template_id + }); const requiredFields = ['template_id', 'name', 'complexity']; for (const field of requiredFields) { if (!featureData[field]) { @@ -211,7 +217,7 @@ router.post('/', async (req, res) => { const feature = await Feature.create({ template_id: featureData.template_id, - feature_id: featureData.feature_id || `feature_${uuidv4()}`, + feature_id: featureData.id, name: featureData.name, description: featureData.description, feature_type: featureData.feature_type || 'suggested', @@ -219,18 +225,10 @@ router.post('/', async (req, res) => { display_order: featureData.display_order || 999, is_default: featureData.is_default || false, created_by_user: featureData.created_by_user || false, + logic_rules: featureData.logic_rules, + business_rules: featureData.business_rules, }); - // Persist aggregated rules - try { - const rules = Array.isArray(featureData.logic_rules) - ? featureData.logic_rules - : featureData.business_rules ?? []; - await FeatureBusinessRules.upsert(feature.template_id, feature.feature_id, rules); - } catch (ruleErr) { - console.error('⚠️ Failed to persist feature business rules:', ruleErr.message); - } - res.status(201).json({ success: true, data: feature, message: `Feature '${feature.name}' created successfully in template_features table` }); } catch (error) { console.error('❌ Error creating feature:', error.message); @@ -466,7 +464,7 @@ router.post('/custom', async (req, res) => { try { await Feature.create({ template_id: data.template_id, - feature_id: `custom_${created.id}`, + feature_id: data.id, name: data.name, description: data.description, feature_type: 'custom',