Upload .sql not update database

I’m sorry, I don’t speak English
Tengo una aplicación, front en Vue 3 con quasar, y back con Express, soy un poco novato, en node y estas tecnologías modernas.
Mi aplicación debe mantener actualizada una base de datos a partir de ficheros de texto plano con sentencias slq de actualización de mis tablas. Estos ficheros se suben y la api debería procesarlos y actualizar la base de datos. Esto funciona correctamente en el local, pero al subirlo a render todo aparentemente funciona correctamente pero al revisar la base de datos no se actualiza.
comparto un poco de código de mi api:

import express from 'express';
import path from 'path';
import fs from 'fs/promises';
import { IncomingForm } from 'formidable';
import AdmZip from 'adm-zip';
import connection from '../config/db.js';
import { fileURLToPath } from 'url';
import { authenticateToken } from '../middlewares/middleware.js';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

const router = express.Router();
const uploadDir = path.join(__dirname, 'uploads');

fs.mkdir(uploadDir, { recursive: true });

router.post('/upload', authenticateToken, (req, res) => {
  console.log('Petición de subida recibida.');
  const form = new IncomingForm();
  form.uploadDir = uploadDir;
  form.keepExtensions = true;

  form.parse(req, async (err, fields, files) => {
    if (err) {
      console.error('Error al procesar el archivo:', err);
      return res.status(500).send('Error al procesar el archivo.');
    }

    console.log('Archivo recibido y parseado.');

    const fileArray = files['pruebasql.zip'];
    if (!fileArray || fileArray.length === 0) {
      console.error('Archivo no encontrado en la solicitud.');
      return res.status(400).send('Archivo no encontrado.');
    }

    const file = fileArray[0];
    const filePath = file.filepath;
    const targetPath = path.join(uploadDir, 'extracted');

    try {
      const zip = new AdmZip(filePath);
      const password = '123'; // Define la contraseña aquí

      await fs.mkdir(targetPath, { recursive: true });

      // Extraer archivos
      zip.extractAllTo(targetPath, true, false, password);

      const sqlFileName = 'pruebasql.txt'; // Nombre del fichero que viene dentro del zip
      const sqlFilePath = path.join(targetPath, sqlFileName);

      console.log(`Extrayendo archivo SQL desde ${sqlFilePath}`);

      const sqlData = await fs.readFile(sqlFilePath, 'utf8');
      const statements = sqlData.split(';').map(statement => statement.trim()).filter(statement => statement);

      console.log('Sentencias SQL cargadas y preparadas para su ejecución.');

      const client = await connection.connect();
      console.log('Conexión a la base de datos establecida.');

      try {
        for (const statement of statements) {
          console.log(`Ejecutando sentencia SQL: ${statement}`);
          await client.query(statement); // Ejecutar directamente sin sanitizar
        }
        client.release();

        console.log('Todas las sentencias SQL ejecutadas correctamente.');

        // Eliminar los archivos después de procesarlos
        await fs.rm(filePath);
        await fs.rm(targetPath, { recursive: true, force: true });

        console.log('Archivos eliminados después del procesamiento.');

        res.send('Archivo subido y procesado con éxito.');
      } catch (err) {
        client.release();
        console.error('Error al ejecutar las sentencias SQL:', err);
        res.status(500).send('Error al ejecutar las sentencias SQL.');
      }

    } catch (err) {
      console.error('Error al procesar el archivo:', err);
      res.status(500).send('Error al procesar el archivo.');
    }
  });
});

export default router;

render no me deja ni defenderme pq no me muestra los console.log, he intentado muchas cosa pero ya se me acabaron las balas. Gracias de antemanos y espero puedan ayudarme un poco.
Saludos

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.