All files / services/scheduler-service/src index.js

93.18% Statements 41/44
85.71% Branches 6/7
100% Functions 0/0
93.18% Lines 41/44

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 451x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x   1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x     1x 1x 1x  
const express = require('express');
const mongoose = require('mongoose');
const config = require('./config');
const scheduleRoutes = require('./routes/index');
const { runWorker } = require('./temporal/worker');
const Schedule = require('./models/Schedule');
const { reconcileSchedules } = require('./temporal/client');
 
const app = express();
 
app.use(express.json());
 
app.get('/health', (req, res) => {
  res.json({ success: true, message: 'Scheduler Service running', version: '1.0.0' });
});
 
app.use('/:organizationId', scheduleRoutes);
app.use('/', scheduleRoutes);
 
mongoose.connect(config.mongodbUri)
  .then(() => {
    console.log('[Scheduler] Connected to MongoDB');
    app.listen(config.port, '0.0.0.0', () => {
      console.log(`[Scheduler] API running on port ${config.port}`);
    });
    runWorker().catch(err => {
      console.error('[Scheduler] Worker error:', err);
    });
 
    // Réconciliation : recréer les schedules Temporal portant un ancien type de
    // workflow (ex. `CrawlerScheduleWorkflow` → `SchedulerTW`). Non bloquant.
    Schedule.find({})
      .then((schedules) => reconcileSchedules(schedules))
      .then((n) => {
        if (n) console.log(`[Scheduler] ${n} schedule(s) réconcilié(s) (type de workflow)`);
      })
      .catch((err) => console.error('[Scheduler] reconcile error:', err.message));
  })
  .catch((err) => {
    console.error('[Scheduler] MongoDB connection error:', err.message);
    process.exit(1);
  });
 
module.exports = app;