changemaker.lite/map/app/routes/dataConvert.js
bunker-admin a77306fac2 Initial v2 commit: complete rebuild with unified API + React admin
Phase 1-14 complete:
- Unified Express.js API (TypeScript, Prisma ORM, PostgreSQL 16)
- React Admin GUI (Vite + Ant Design + Zustand)
- JWT auth with refresh tokens
- Influence: Campaigns, Representatives, Responses, Email Queue
- Map: Locations, Cuts, Shifts, Canvassing System
- NAR data import infrastructure (2025 format)
- Listmonk newsletter integration
- Landing page builder (GrapesJS)
- MkDocs + Code Server integration
- Volunteer portal with GPS tracking
- Monitoring stack (Prometheus, Grafana, Alertmanager)
- Pangolin tunnel integration

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-11 10:05:04 -07:00

34 lines
1.1 KiB
JavaScript

const express = require('express');
const router = express.Router();
const multer = require('multer');
const dataConvertController = require('../controllers/dataConvertController');
// Configure multer for CSV upload
const upload = multer({
storage: multer.memoryStorage(),
fileFilter: (req, file, cb) => {
if (file.mimetype === 'text/csv' || file.originalname.endsWith('.csv')) {
cb(null, true);
} else {
cb(new Error('Only CSV files are allowed'));
}
},
limits: {
fileSize: 10 * 1024 * 1024 // 10MB limit
}
});
// Process CSV file
router.post('/process-csv', upload.single('csvFile'), dataConvertController.processCSV);
// Save geocoded data
router.post('/save-geocoded', dataConvertController.saveGeocodedData);
// Download processing report
router.get('/download-report/:sessionId', dataConvertController.downloadReport);
// Scan database for records missing geo-location data and geocode them
router.post('/scan-and-geocode', dataConvertController.scanAndGeocode);
module.exports = router;