87 lines
3.9 KiB
JavaScript
87 lines
3.9 KiB
JavaScript
require('dotenv').config();
|
|
const express = require('express');
|
|
const { getPool } = require('./config/database');
|
|
|
|
const schemaRouter = require('./routes/schema');
|
|
const articlesRouter = require('./routes/articles');
|
|
const fournisseursRouter = require('./routes/fournisseurs');
|
|
const commandesRouter = require('./routes/commandes');
|
|
const stockRouter = require('./routes/stock');
|
|
const mouvementsRouter = require('./routes/mouvements');
|
|
const performanceRouter = require('./routes/performance');
|
|
const syncRouter = require('./routes/sync');
|
|
const rankingRouter = require('./routes/ranking');
|
|
const publicitesRouter = require('./routes/publicites');
|
|
const commandesAutoRouter = require('./routes/commandes-auto');
|
|
|
|
const app = express();
|
|
app.use(express.json());
|
|
|
|
// Health check
|
|
app.get('/api/health', async (req, res) => {
|
|
try {
|
|
const pool = getPool();
|
|
await pool.query('SELECT 1 AS ok');
|
|
res.json({ status: 'ok', database: process.env.PG_DB, server: process.env.PG_HOST });
|
|
} catch (err) {
|
|
res.status(500).json({ status: 'error', detail: err.message });
|
|
}
|
|
});
|
|
|
|
// Routes
|
|
app.use('/api/schema', schemaRouter);
|
|
app.use('/api/articles', articlesRouter);
|
|
app.use('/api/fournisseurs', fournisseursRouter);
|
|
app.use('/api/commandes', commandesRouter);
|
|
app.use('/api/stock', stockRouter);
|
|
app.use('/api/mouvements', mouvementsRouter);
|
|
app.use('/api/performance', performanceRouter);
|
|
app.use('/api/sync', syncRouter);
|
|
app.use('/api/ranking', rankingRouter);
|
|
app.use('/api/publicites', publicitesRouter);
|
|
app.use('/api/commandes-auto', commandesAutoRouter);
|
|
|
|
// 404
|
|
app.use((req, res) => {
|
|
res.status(404).json({ error: 'Route introuvable' });
|
|
});
|
|
|
|
const PORT = process.env.API_PORT || 3000;
|
|
app.listen(PORT, () => {
|
|
console.log(`\nAPI Foirfouille démarrée sur http://localhost:${PORT}`);
|
|
console.log(`Base : ${process.env.PG_HOST}/${process.env.PG_DB} (PostgreSQL)\n`);
|
|
console.log('Endpoints disponibles :');
|
|
console.log(' GET /api/health');
|
|
console.log(' GET /api/schema/tables[?search=]');
|
|
console.log(' GET /api/schema/top[?limit=]');
|
|
console.log(' GET /api/schema/tables/:nom');
|
|
console.log(' GET /api/articles[?search=&codein=&ean=&codefou=&actif=&page=&limit=]');
|
|
console.log(' GET /api/articles/:id');
|
|
console.log(' GET /api/articles/:id/referentiel');
|
|
console.log(' GET /api/articles/:id/dernier-fournisseur[?site=]');
|
|
console.log(' GET /api/articles/:id/mouvements');
|
|
console.log(' GET /api/fournisseurs[?search=]');
|
|
console.log(' GET /api/fournisseurs/:code/articles');
|
|
console.log(' GET /api/fournisseurs/:code/commandes');
|
|
console.log(' GET /api/fournisseurs/:code/franco');
|
|
console.log(' GET /api/commandes[?dateDebut=&dateFin=&codefou=]');
|
|
console.log(' GET /api/commandes/:noCommande');
|
|
console.log(' GET /api/commandes/receptions/liste');
|
|
console.log(' GET /api/stock[?site=]');
|
|
console.log(' GET /api/stock/article/:id');
|
|
console.log(' GET /api/stock/site/:site');
|
|
console.log(' GET /api/stock/valorisation');
|
|
console.log(' GET /api/mouvements/articles[?dateDebut=&dateFin=&site=]');
|
|
console.log(' GET /api/mouvements/reglements[?dateDebut=&dateFin=]');
|
|
console.log(' GET /api/mouvements/synthese[?dateDebut=&dateFin=&site=]');
|
|
console.log(' GET /api/performance/ca[?dateDebut=&dateFin=&site=&groupBy=jour|mois]');
|
|
console.log(' GET /api/performance/hitparade[?dateDebut=&dateFin=&site=&limit=&groupBy=qte|ca|marge]');
|
|
console.log(' GET /api/performance/ca/nomenclature[?dateDebut=&dateFin=&site=&niveau=]');
|
|
console.log(' GET /api/performance/ca/gamme[?dateDebut=&dateFin=&site=]');
|
|
console.log(' GET /api/publicites[?search=&site=&dateDebut=&dateFin=&page=&limit=]');
|
|
console.log(' GET /api/publicites/:code[?site=]');
|
|
console.log(' GET /api/commandes-auto[?site=&codefou=]');
|
|
console.log(' GET /api/commandes-auto/:codefou[?site=]');
|
|
console.log(' GET /api/sync/status');
|
|
});
|