119 lines
4.1 KiB
JavaScript
119 lines
4.1 KiB
JavaScript
import db from '../../db.js';
|
|
import path from 'path';
|
|
import storageManager from '../data/storageManager.js';
|
|
|
|
async function uploadMeasureImage(image, projectId, orderId) {
|
|
try {
|
|
// Ensure that folder creation and file saving are awaited
|
|
const projectDir = await storageManager.createFolder('./storage/' + projectId.toString());
|
|
const imagesDir = await storageManager.createFolder(path.join(projectDir, 'images'));
|
|
const imagePath = path.join(imagesDir, `${orderId}.jpg`);
|
|
|
|
// Save the file and await completion
|
|
await storageManager.saveFile(imagePath, image.buffer);
|
|
|
|
console.log("[FILE] uploadMeasureImage - Image saved to: " + imagePath);
|
|
return imagePath;
|
|
} catch (error) {
|
|
console.error('Error in uploadMeasureImage:', error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
async function getMeasureImage(projectId, orderId) {
|
|
const projectPath = `${projectId}`;
|
|
const imagePath = `${projectPath}/${orderId}.jpg`;
|
|
console.log("[FILE] getMeasureImage - Image path: " + imagePath);
|
|
return storageManager.getFile(imagePath);
|
|
}
|
|
|
|
async function getNextOrderId(projectId) {
|
|
const query = 'SELECT MAX(order_id) FROM public.measurements WHERE project_id = $1';
|
|
const values = [projectId];
|
|
const res = await db.query(query, values);
|
|
console.log("[DB] getNextOrderId - Max order_id: " + res.rows[0].max);
|
|
return res.rows[0].max + 1;
|
|
}
|
|
|
|
async function addMeasureToProject(projectId, orderId, timestamp, path, temperature, humidity) {
|
|
const query = 'INSERT INTO public.measurements (project_id, timestamp, path, temperature, humidity, order_id) VALUES ($1, $2, $3, $4, $5, $6) RETURNING *';
|
|
const values = [projectId, orderId, timestamp, path, temperature, humidity];
|
|
const res = await db.query(query, values);
|
|
return res.rows[0];
|
|
}
|
|
|
|
async function getMeasurements(projectId) {
|
|
const query = 'SELECT * FROM public.measurements WHERE project_id = $1';
|
|
const values = [projectId];
|
|
const res = await db.query(query, values);
|
|
return res.rows;
|
|
}
|
|
|
|
async function getMeasurement(projectId, orderId) {
|
|
const query = 'SELECT * FROM public.measurements WHERE project_id = $1 AND order_id = $2';
|
|
const values = [projectId, orderId];
|
|
const res = await db.query(query, values);
|
|
return res.rows[0];
|
|
}
|
|
|
|
async function getMeasurementById(id) {
|
|
const query = 'SELECT * FROM public.measurements WHERE id = $1';
|
|
const values = [id];
|
|
const res = await db.query(query, values);
|
|
return res.rows[0];
|
|
}
|
|
|
|
async function updateMeasurement(projectId, orderId, timestamp, path, temperature, humidity) {
|
|
const query = 'UPDATE public.measurements SET timestamp = $3, path = $4, temperature = $5, humidity = $6 WHERE project_id = $1 AND order_id = $2 RETURNING *';
|
|
const values = [projectId, orderId, timestamp, path, temperature, humidity];
|
|
const res = await db.query(query, values);
|
|
return res.rows[0];
|
|
}
|
|
|
|
async function updateMeasurementById(id, timestamp, path, temperature, humidity) {
|
|
const query = 'UPDATE public.measurements SET timestamp = $2, path = $3, temperature = $4, humidity = $5 WHERE id = $1 RETURNING *';
|
|
const values = [id, timestamp, path, temperature, humidity];
|
|
const res = await db.query(query, values);
|
|
return res.rows[0];
|
|
}
|
|
|
|
async function deleteMeasurement(id) {
|
|
const query = 'DELETE FROM public.measurements WHERE id = $1';
|
|
const values = [id];
|
|
const res = await db.query(query, values);
|
|
return res.rows[0];
|
|
}
|
|
|
|
async function getPathFromIds(projectId, orderId) {
|
|
const query = 'SELECT path FROM public.measurements WHERE project_id = $1 AND order_id = $2';
|
|
const values = [projectId, orderId];
|
|
const res = await db.query(query, values);
|
|
return res.rows[0].path;
|
|
}
|
|
|
|
async function getPathList(IdList, projectId) {
|
|
console.log(IdList);
|
|
const pathList = [];
|
|
for (const id of IdList) {
|
|
const path = await getPathFromIds(projectId, id);
|
|
console.log(path);
|
|
pathList.push(path);
|
|
}
|
|
return pathList;
|
|
}
|
|
|
|
export {
|
|
uploadMeasureImage,
|
|
addMeasureToProject,
|
|
getNextOrderId,
|
|
getMeasurements,
|
|
getMeasurement,
|
|
updateMeasurement,
|
|
deleteMeasurement,
|
|
getMeasureImage,
|
|
getMeasurementById,
|
|
updateMeasurementById,
|
|
getPathFromIds,
|
|
getPathList
|
|
}
|