Files
graphs/backend/routes/olistRoutes.js
Cauê Faleiros f836319041
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 47s
Add Olist sync logs and stop control
2026-08-10 14:25:38 -03:00

77 lines
2.1 KiB
JavaScript

const express = require('express');
const { verifySuperAdmin } = require('../auth');
const {
completeAuthorization,
createAuthorizationUrl,
getOlistFrontendRedirect,
getOlistRunDetails,
getOlistStatus,
requestOlistSyncStop,
startOlistSync
} = require('../services/olistService');
const router = express.Router();
router.get('/olist/status', verifySuperAdmin, async (req, res, next) => {
try {
res.json(await getOlistStatus());
} catch (error) {
next(error);
}
});
router.post('/olist/authorization-url', verifySuperAdmin, async (req, res, next) => {
try {
res.json({ url: await createAuthorizationUrl() });
} catch (error) {
next(error);
}
});
router.post('/olist/sync', verifySuperAdmin, async (req, res, next) => {
try {
const result = await startOlistSync({
trigger: 'manual',
fullSync: req.body?.fullSync === true
});
res.status(result.accepted ? 202 : 409).json(result);
} catch (error) {
next(error);
}
});
router.post('/olist/sync/stop', verifySuperAdmin, async (req, res, next) => {
try {
res.status(202).json(await requestOlistSyncStop());
} catch (error) {
next(error);
}
});
router.get('/olist/runs/:runId', verifySuperAdmin, async (req, res, next) => {
try {
res.json(await getOlistRunDetails(req.params.runId, {
eventsPage: req.query.eventsPage,
productsPage: req.query.productsPage
}));
} catch (error) {
next(error);
}
});
router.get('/olist/oauth/callback', async (req, res) => {
try {
if (req.query.error || !req.query.code || !req.query.state) {
res.redirect(getOlistFrontendRedirect('cancelled'));
return;
}
await completeAuthorization({ code: String(req.query.code), state: String(req.query.state) });
res.redirect(getOlistFrontendRedirect('connected'));
} catch (error) {
console.error('Olist OAuth callback failed:', error.message);
res.redirect(getOlistFrontendRedirect('failed'));
}
});
module.exports = router;