Actualizar server.js
This commit is contained in:
55
server.js
55
server.js
@@ -79,6 +79,23 @@ async function autoUpdateDB() {
|
|||||||
status TEXT DEFAULT 'active',
|
status TEXT DEFAULT 'active',
|
||||||
created_at TIMESTAMP DEFAULT NOW()
|
created_at TIMESTAMP DEFAULT NOW()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
-- COLA DEL ROBOT
|
||||||
|
CREATE TABLE IF NOT EXISTS robot_queue (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
owner_id INT REFERENCES users(id) ON DELETE CASCADE,
|
||||||
|
provider TEXT DEFAULT 'homeserve',
|
||||||
|
service_number TEXT NOT NULL,
|
||||||
|
new_status TEXT NOT NULL,
|
||||||
|
appointment_date TEXT,
|
||||||
|
observation TEXT,
|
||||||
|
inform_client BOOLEAN DEFAULT FALSE,
|
||||||
|
status TEXT DEFAULT 'PENDING', -- PENDING, RUNNING, DONE, FAILED
|
||||||
|
error_msg TEXT,
|
||||||
|
created_at TIMESTAMP DEFAULT NOW(),
|
||||||
|
updated_at TIMESTAMP DEFAULT NOW()
|
||||||
|
|
||||||
|
);
|
||||||
CREATE TABLE IF NOT EXISTS login_codes (
|
CREATE TABLE IF NOT EXISTS login_codes (
|
||||||
id SERIAL PRIMARY KEY,
|
id SERIAL PRIMARY KEY,
|
||||||
user_id INT REFERENCES users(id) ON DELETE CASCADE,
|
user_id INT REFERENCES users(id) ON DELETE CASCADE,
|
||||||
@@ -2688,6 +2705,44 @@ app.delete("/budgets/:id", authMiddleware, async (req, res) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ==========================================
|
||||||
|
// 🤖 API COLA DEL ROBOT (REEMPLAZO FIREBASE)
|
||||||
|
// ==========================================
|
||||||
|
|
||||||
|
// 1. Enviar una orden al Robot
|
||||||
|
app.post("/robot/queue", authMiddleware, async (req, res) => {
|
||||||
|
try {
|
||||||
|
const { service_number, new_status, appointment_date, observation, inform_client } = req.body;
|
||||||
|
|
||||||
|
const q = await pool.query(`
|
||||||
|
INSERT INTO robot_queue (owner_id, service_number, new_status, appointment_date, observation, inform_client)
|
||||||
|
VALUES ($1, $2, $3, $4, $5, $6) RETURNING id
|
||||||
|
`, [req.user.accountId, service_number, new_status, appointment_date || "", observation || "", inform_client || false]);
|
||||||
|
|
||||||
|
res.json({ ok: true, jobId: q.rows[0].id });
|
||||||
|
} catch (e) {
|
||||||
|
console.error("Error guardando en cola:", e);
|
||||||
|
res.status(500).json({ ok: false, error: e.message });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 2. Leer el estado de la cola (Monitor)
|
||||||
|
app.get("/robot/queue", authMiddleware, async (req, res) => {
|
||||||
|
try {
|
||||||
|
const q = await pool.query(`
|
||||||
|
SELECT id, service_number, status, error_msg, created_at
|
||||||
|
FROM robot_queue
|
||||||
|
WHERE owner_id = $1
|
||||||
|
ORDER BY created_at DESC
|
||||||
|
LIMIT 20
|
||||||
|
`, [req.user.accountId]);
|
||||||
|
|
||||||
|
res.json({ ok: true, jobs: q.rows });
|
||||||
|
} catch (e) {
|
||||||
|
res.status(500).json({ ok: false });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
// ==========================================
|
// ==========================================
|
||||||
// 🕒 EL RELOJ DEL SISTEMA (Ejecutar cada minuto)
|
// 🕒 EL RELOJ DEL SISTEMA (Ejecutar cada minuto)
|
||||||
|
|||||||
Reference in New Issue
Block a user