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
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);
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);

View File

@ -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',