import getConfig from 'next/config'; const { publicRuntimeConfig } = getConfig(); export default class DatabaseService { // Empêcher l'instanciation de cette classe utilitaire private constructor() { } /** * Récupère les données d'une table avec pagination * @param tableName Nom de la table à consulter * @param page Numéro de page (commence à 1) * @param limit Nombre d'éléments par page * @returns Données de la table avec pagination */ public static async getTableData(tableName: string, page: number = 1, limit: number = 10): Promise { // Vérification des paramètres if (!tableName) { throw new Error('Le nom de la table est requis'); } // Validation du nom de la table (par sécurité) const tableNameRegex = /^[a-zA-Z0-9_]+$/; if (!tableNameRegex.test(tableName)) { throw new Error('Nom de table invalide'); } try { // Construction de l'URL avec paramètres de pagination const url = `${publicRuntimeConfig.NEXT_PUBLIC_API_URL}/db/${tableName}?page=${page}&limit=${limit}`; // Appel à l'API REST const response = await fetch(url, { method: 'GET', headers: { 'Content-Type': 'application/json', }, }); if (!response.ok) { const errorData = await response.json(); throw new Error(errorData.message || 'Erreur lors de la récupération des données'); } const data = await response.json(); return data; } catch (error) { console.error('Erreur lors de l\'accès à la base de données:', error); throw error; } } }