Spaces:
Running
Running
| import { dbQuery, dbGet, dbRun, getDb } from '../config/db.js'; | |
| import { sendContactNotification } from '../utils/mailer.js'; | |
| async function ensureDb() { await getDb(); } | |
| export async function createMessage(req, res) { | |
| try { | |
| await ensureDb(); | |
| const { name, email, subject, content } = req.body; | |
| if (!name || !email || !subject || !content) { | |
| return res.status(400).json({ success: false, message: 'Missing required fields' }); | |
| } | |
| const result = await dbRun( | |
| 'INSERT INTO messages (name, email, subject, content) VALUES (?,?,?,?)', | |
| [name, email, subject, content] | |
| ); | |
| const newMsg = await dbGet('SELECT * FROM messages WHERE id = ?', [result.lastID]); | |
| // Send email notification asynchronously (non-blocking) | |
| sendContactNotification({ name, email, subject, content }).catch(err => { | |
| console.error('sendContactNotification async error:', err); | |
| }); | |
| res.status(201).json({ success: true, message: 'Message sent successfully!', data: newMsg }); | |
| } catch (error) { | |
| console.error('createMessage error:', error); | |
| res.status(500).json({ success: false, message: 'Server error sending message' }); | |
| } | |
| } | |
| export async function getMessages(req, res) { | |
| try { | |
| await ensureDb(); | |
| const messages = await dbQuery('SELECT * FROM messages ORDER BY id DESC'); | |
| res.status(200).json({ success: true, count: messages.length, data: messages }); | |
| } catch (error) { | |
| console.error('getMessages error:', error); | |
| res.status(500).json({ success: false, message: 'Server error retrieving messages' }); | |
| } | |
| } | |
| export async function markAsRead(req, res) { | |
| try { | |
| await ensureDb(); | |
| const { id } = req.params; | |
| const { read_status } = req.body; | |
| const message = await dbGet('SELECT * FROM messages WHERE id = ?', [id]); | |
| if (!message) return res.status(404).json({ success: false, message: 'Message not found' }); | |
| await dbRun('UPDATE messages SET read_status = ? WHERE id = ?', [read_status !== undefined ? read_status : 1, id]); | |
| const updated = await dbGet('SELECT * FROM messages WHERE id = ?', [id]); | |
| res.status(200).json({ success: true, message: 'Message updated', data: updated }); | |
| } catch (error) { | |
| console.error('markAsRead error:', error); | |
| res.status(500).json({ success: false, message: 'Server error' }); | |
| } | |
| } | |
| export async function deleteMessage(req, res) { | |
| try { | |
| await ensureDb(); | |
| const { id } = req.params; | |
| const message = await dbGet('SELECT * FROM messages WHERE id = ?', [id]); | |
| if (!message) return res.status(404).json({ success: false, message: 'Message not found' }); | |
| await dbRun('DELETE FROM messages WHERE id = ?', [id]); | |
| res.status(200).json({ success: true, message: 'Message deleted' }); | |
| } catch (error) { | |
| console.error('deleteMessage error:', error); | |
| res.status(500).json({ success: false, message: 'Server error' }); | |
| } | |
| } | |