const { resolveCommentModerationStatus } = require('./contentModeration') const STATUS_FALLBACKS = { temp_accept: ['temp_accept', 'accepted', 'pending'], rejected: ['rejected', 'pending'], } /** * Save comment with moderation status; fall back if server schema lacks newer enum values. */ async function saveCommentWithModerationStatus(Model, data, textField = 'comment') { const text = data[textField] ?? data.text ?? '' const preferredStatus = resolveCommentModerationStatus(text) const candidates = STATUS_FALLBACKS[preferredStatus] ?? [preferredStatus] let lastError = null for (let i = 0; i < candidates.length; i += 1) { const status = candidates[i] const doc = new Model({ ...data, status }) try { await doc.save() return doc } catch (err) { lastError = err const isLast = i === candidates.length - 1 if (err?.name === 'ValidationError' && !isLast) { continue } throw err } } throw lastError ?? new Error('Failed to save comment') } module.exports = { saveCommentWithModerationStatus, }