-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsankeyRoutes.mjs
113 lines (102 loc) · 3.44 KB
/
sankeyRoutes.mjs
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import express from 'express';
import {
getBigPictureData,
getQuarterData,
getWalletData,
getCategorySankeyData,
getYearData,
getYearWalletData,
getYearCategoryData
} from '../services/sankeyService.mjs';
import { cacheManager } from '../utils/cacheManager.mjs';
const router = express.Router();
router.use((req, res, next) => {
if (!cacheManager.isInitialized) {
console.log('Warning: Cache is not initialized yet, using direct computation');
}
next();
});
router.get('/data/big_picture', (req, res) => {
try {
const hideMode = req.query.hideMode === 'true';
const sankeyData = getBigPictureData(hideMode);
res.json(sankeyData);
} catch (error) {
console.error('Error creating Sankey data:', error);
res.status(500).send('Internal Server Error');
}
});
router.get('/data/:quarter', (req, res) => {
try {
const quarter = req.params.quarter;
const sankeyData = getQuarterData(quarter);
res.json(sankeyData);
} catch (error) {
console.error('Error creating Sankey data:', error);
res.status(500).send('Internal Server Error');
}
});
router.get('/data/year/:year', (req, res) => {
try {
const year = req.params.year;
const sankeyData = getYearData(year);
res.json(sankeyData);
} catch (error) {
console.error('Error creating yearly Sankey data:', error);
res.status(500).send('Internal Server Error');
}
});
router.get('/data/:quarter/:wallet', (req, res) => {
try {
const quarter = req.params.quarter;
const walletFilter = req.params.wallet;
const sankeyData = getWalletData(quarter, walletFilter);
res.json(sankeyData);
} catch (error) {
console.error('Error creating Sankey data:', error);
res.status(500).send('Internal Server Error');
}
});
router.get('/category-sankey-data/quarter/:quarter/category/:category', (req, res) => {
try {
const category = req.params.category;
const quarter = req.params.quarter;
const sankeyData = getCategorySankeyData(category, quarter);
res.json(sankeyData);
} catch (error) {
console.error('Error creating category Sankey data:', error);
res.status(500).send('Internal Server Error');
}
});
router.get('/category-sankey-data/year/:year/category/:category', (req, res) => {
try {
const category = req.params.category;
const year = req.params.year;
const sankeyData = getYearCategoryData(category, year);
res.json(sankeyData);
} catch (error) {
console.error('Error creating yearly category Sankey data:', error);
res.status(500).send('Internal Server Error');
}
});
router.get('/data/year/:year/:wallet', (req, res) => {
try {
const year = req.params.year;
const walletFilter = req.params.wallet;
const sankeyData = getYearWalletData(year, walletFilter);
res.json(sankeyData);
} catch (error) {
console.error('Error creating yearly wallet Sankey data:', error);
res.status(500).send('Internal Server Error');
}
});
router.get('/cache/stats', (req, res) => {
try {
const stats = cacheManager.getStats();
res.json(stats);
} catch (error) {
console.error('Error getting cache stats:', error);
res.status(500).send('Internal Server Error');
}
});
export { router as sankeyRoutes };