backend changes

This commit is contained in:
Chandini 2025-09-10 09:44:26 +05:30
parent 58aada3d57
commit 0d3663f62d
2 changed files with 31 additions and 14 deletions

View File

@ -132,8 +132,27 @@ class Feature {
// Persist rules (aggregated JSONB) if provided // Persist rules (aggregated JSONB) if provided
try { try {
const rawRules = featureData.logic_rules ?? featureData.business_rules ?? []; 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); 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) { } catch (ruleErr) {
// Do not block feature creation if rules fail; log and continue // Do not block feature creation if rules fail; log and continue
console.error('⚠️ Failed to persist aggregated business rules:', ruleErr.message); console.error('⚠️ Failed to persist aggregated business rules:', ruleErr.message);

View File

@ -198,6 +198,12 @@ router.post('/', async (req, res) => {
try { try {
const featureData = req.body; const featureData = req.body;
console.log('🏗️ Creating new feature:', featureData.name); 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']; const requiredFields = ['template_id', 'name', 'complexity'];
for (const field of requiredFields) { for (const field of requiredFields) {
if (!featureData[field]) { if (!featureData[field]) {
@ -211,7 +217,7 @@ router.post('/', async (req, res) => {
const feature = await Feature.create({ const feature = await Feature.create({
template_id: featureData.template_id, template_id: featureData.template_id,
feature_id: featureData.feature_id || `feature_${uuidv4()}`, feature_id: featureData.id,
name: featureData.name, name: featureData.name,
description: featureData.description, description: featureData.description,
feature_type: featureData.feature_type || 'suggested', feature_type: featureData.feature_type || 'suggested',
@ -219,18 +225,10 @@ router.post('/', async (req, res) => {
display_order: featureData.display_order || 999, display_order: featureData.display_order || 999,
is_default: featureData.is_default || false, is_default: featureData.is_default || false,
created_by_user: featureData.created_by_user || 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` }); res.status(201).json({ success: true, data: feature, message: `Feature '${feature.name}' created successfully in template_features table` });
} catch (error) { } catch (error) {
console.error('❌ Error creating feature:', error.message); console.error('❌ Error creating feature:', error.message);
@ -466,7 +464,7 @@ router.post('/custom', async (req, res) => {
try { try {
await Feature.create({ await Feature.create({
template_id: data.template_id, template_id: data.template_id,
feature_id: `custom_${created.id}`, feature_id: data.id,
name: data.name, name: data.name,
description: data.description, description: data.description,
feature_type: 'custom', feature_type: 'custom',