Ajout de tests pour la création et la suppression de projets, et refactorisation des fonctions de gestion des projets dans dbUtils

This commit is contained in:
2025-01-15 15:21:55 +01:00
parent a2d3eac077
commit 8ad8ace83d
2 changed files with 84 additions and 62 deletions

View File

@@ -7,6 +7,14 @@ async function printProjects() {
console.log('Projects:', projects); console.log('Projects:', projects);
} }
async function testCreateDestroyProject() {
const project = await databaseUtils.createProject('Test project', 'Test description', new Date(), 0);
console.log('Project created:', project);
await databaseUtils.deleteProject(project.id);
console.log('Project deleted');
}
try { try {
printProjects(); printProjects();
} catch (error) { } catch (error) {

View File

@@ -1,71 +1,85 @@
const db = require('../db'); // Assurez-vous que le chemin est correct const db = require('../db'); // Assurez-vous que le chemin est correct
const projectsTable = { const projectsTable = {
create: async (name, description, startDate, status) => {
addProject: async (name, description) => { const query = 'INSERT INTO public.projects (name, description, start_date, status) VALUES ($1, $2, $3, $4) RETURNING *';
const query = ` const values = [name, description, startDate, status];
INSERT INTO projects (name, description) const res = await db.query(query, values);
VALUES ($1, $2) return res.rows[0];
RETURNING *;
`;
try {
const result = await db.query(query, [name, description]);
return result.rows[0];
} catch (error) {
console.error('Error adding project:', error);
}
}, },
update: async (id, name, description, startDate, status) => {
getProjects: async () => { const query = 'UPDATE public.projects SET name = $1, description = $2, start_date = $3, status = $4 WHERE id = $5 RETURNING *';
const query = ` const values = [name, description, startDate, status, id];
SELECT * FROM projects; const res = await db.query(query, values);
`; return res.rows[0];
try {
const result = await db.query(query);
return result.rows;
} catch (error) {
console.error('Error fetching projects:', error);
}
}, },
delete: async (id) => {
getProjectById: async (id) => { const query = 'DELETE FROM public.projects WHERE id = $1';
const query = ` const values = [id];
SELECT * FROM projects WHERE id = $1; await db.query(query, values);
`;
try {
const result = await db.query(query, [id]);
return result.rows[0];
} catch (error) {
console.error('Error fetching project by id:', error);
}
}, },
getById: async (id) => {
updateProject: async (id, name, description) => { const query = 'SELECT * FROM public.projects WHERE id = $1';
const query = ` const values = [id];
UPDATE projects const res = await db.query(query, values);
SET name = $1, description = $2 return res.rows[0];
WHERE id = $3
RETURNING *;
`;
try {
const result = await db.query(query, [name, description, id]);
return result.rows[0];
} catch (error) {
console.error('Error updating project:', error);
}
},
deleteProject: async (id) => {
const query = `
DELETE FROM projects WHERE id = $1;
`;
try {
await db.query(query, [id]);
console.log('Project deleted successfully');
} catch (error) {
console.error('Error deleting project:', error);
}
} }
}; };
module.exports = projectsTable; const measurementsTable = {
create: async (projectId, timestamp, imagePath, temperature, humidity, completed) => {
const query = 'INSERT INTO public.measurements (project_id, timestamp, image_path, temperature, humidity, completed) VALUES ($1, $2, $3, $4, $5, $6) RETURNING *';
const values = [projectId, timestamp, imagePath, temperature, humidity, completed];
const res = await db.query(query, values);
return res.rows[0];
},
update: async (id, projectId, timestamp, imagePath, temperature, humidity, completed) => {
const query = 'UPDATE public.measurements SET project_id = $1, timestamp = $2, image_path = $3, temperature = $4, humidity = $5, completed = $6 WHERE id = $7 RETURNING *';
const values = [projectId, timestamp, imagePath, temperature, humidity, completed, id];
const res = await db.query(query, values);
return res.rows[0];
},
delete: async (id) => {
const query = 'DELETE FROM public.measurements WHERE id = $1';
const values = [id];
await db.query(query, values);
},
getById: async (id) => {
const query = 'SELECT * FROM public.measurements WHERE id = $1';
const values = [id];
const res = await db.query(query, values);
return res.rows[0];
}
};
const videosTable = {
create: async (projectId, measurementIds, videoPath, startTimestamp, endTimestamp, imageCount, resolution, duration, fps, status, name) => {
const query = 'INSERT INTO public.videos (project_id, measurement_ids, video_path, start_timestamp, end_timestamp, image_count, resolution, duration, fps, status, name) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) RETURNING *';
const values = [projectId, measurementIds, videoPath, startTimestamp, endTimestamp, imageCount, resolution, duration, fps, status, name];
const res = await db.query(query, values);
return res.rows[0];
},
update: async (id, projectId, measurementIds, videoPath, startTimestamp, endTimestamp, imageCount, resolution, duration, fps, status, name) => {
const query = 'UPDATE public.videos SET project_id = $1, measurement_ids = $2, video_path = $3, start_timestamp = $4, end_timestamp = $5, image_count = $6, resolution = $7, duration = $8, fps = $9, status = $10, name = $11 WHERE id = $12 RETURNING *';
const values = [projectId, measurementIds, videoPath, startTimestamp, endTimestamp, imageCount, resolution, duration, fps, status, name, id];
const res = await db.query(query, values);
return res.rows[0];
},
delete: async (id) => {
const query = 'DELETE FROM public.videos WHERE id = $1';
const values = [id];
await db.query(query, values);
},
getById: async (id) => {
const query = 'SELECT * FROM public.videos WHERE id = $1';
const values = [id];
const res = await db.query(query, values);
return res.rows[0];
}
};
module.exports = {
projectsTable,
measurementsTable,
videosTable
};