const { pool } = require('../db'); const { formatOrderRow, normalizeOrderPayload } = require('../mappers/orderMapper'); const listOrders = async () => { const result = await pool.query('SELECT * FROM orders ORDER BY id DESC'); return result.rows.map(formatOrderRow); }; const upsertOrders = async (payload) => { const client = await pool.connect(); try { await client.query('BEGIN'); const insertQuery = ` INSERT INTO orders ( cliente_nome, data_pedido, data_pedido_date, valor_pedido, produto_id, produto_descricao, quantidade, valor_unitario, pedido_id, cliente_fone ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) ON CONFLICT (pedido_id, produto_id) DO UPDATE SET cliente_nome = EXCLUDED.cliente_nome, data_pedido = EXCLUDED.data_pedido, data_pedido_date = EXCLUDED.data_pedido_date, valor_pedido = EXCLUDED.valor_pedido, produto_descricao = EXCLUDED.produto_descricao, quantidade = EXCLUDED.quantidade, valor_unitario = EXCLUDED.valor_unitario, cliente_fone = EXCLUDED.cliente_fone, created_at = CURRENT_TIMESTAMP `; for (const item of payload) { await client.query(insertQuery, normalizeOrderPayload(item)); } await client.query('COMMIT'); } catch (error) { await client.query('ROLLBACK'); throw error; } finally { client.release(); } }; module.exports = { listOrders, upsertOrders };