|
1 | 1 | const { logInfoMsgPrefix, logWarnMsgPrefix, logErrorMsgPrefix } = require('../utils/utils'); |
2 | | -const { magFieldMeasurements, angVelocityMeasurements, adcsTags, magFieldMeasurementsTag, magFieldMeasurementsFields, angVelocityMeasurementsTag, angVelocityMeasurementsFields } = require('../measurements/adcsMeasurements'); |
3 | | - |
| 2 | +const { adcsTags, magFieldMeasurementsTag, magFieldMeasurementsFields, angVelocityMeasurementsTag, angVelocityMeasurementsFields } = require('../measurements/adcsMeasurements'); |
| 3 | +const angVelocityMeasurements = require('../measurements/adcsMeasurements'); |
| 4 | +const magFieldMeasurements = require('../measurements/adcsMeasurements'); |
4 | 5 | /** |
5 | 6 | * adcs.js |
6 | 7 | * @brief This file contains the controller functions for the ADCS API |
@@ -53,22 +54,42 @@ const getMagFieldData = async (req, res) => { |
53 | 54 | } |
54 | 55 |
|
55 | 56 | try { |
56 | | - const data = await magFieldMeasurements(variant, start, end); |
57 | | - console.log(logInfoMsgPrefix('ADCS magnetic field data fetched successfully')); |
58 | | - res.status(200).json({ |
59 | | - variant: variant, |
60 | | - start: start, |
61 | | - end: end, |
62 | | - data: data |
| 57 | + const queryResult = await magFieldMeasurements.magFieldMeasurements(variant, start, end); |
| 58 | + |
| 59 | + const merged = {}; |
| 60 | + |
| 61 | + queryResult.forEach(item => { |
| 62 | + const time = item._time; |
| 63 | + |
| 64 | + if (!merged[time]) { |
| 65 | + merged[time] = { |
| 66 | + variant: item.variant, |
| 67 | + timestamp: time, |
| 68 | + LSB: null, |
| 69 | + X: null, |
| 70 | + Y: null, |
| 71 | + Z: null |
| 72 | + }; |
| 73 | + } |
| 74 | + |
| 75 | + const axis = item._field.toUpperCase(); |
| 76 | + merged[time][axis] = item._value; |
| 77 | + |
63 | 78 | }); |
| 79 | + |
| 80 | + const finalOutput = Object.values(merged); |
| 81 | + console.log(logInfoMsgPrefix('ADCS magnetic field data fetched successfully')); |
| 82 | + |
| 83 | + res.status(200).json(finalOutput); |
| 84 | + |
64 | 85 | } catch (error) { |
65 | 86 | console.error(logErrorMsgPrefix('Error fetching ADCS magnetic field data'), error); |
66 | 87 | res.status(500).json({ error: 'Internal server error' }); |
67 | 88 | } |
68 | 89 | }; |
69 | 90 |
|
70 | 91 | const getAngVelocityData = async (req, res) => { |
71 | | - console.log(logInfoMsgPrefix('ADCS angular velocityy check'), 'request_body:', req.body); |
| 92 | + console.log(logInfoMsgPrefix('ADCS angular velocity check'), 'request_body:', req.body); |
72 | 93 | const variant = req.params.variant; |
73 | 94 | let { start, end } = req.query; // extract query parameters |
74 | 95 |
|
@@ -114,14 +135,33 @@ const getAngVelocityData = async (req, res) => { |
114 | 135 | } |
115 | 136 |
|
116 | 137 | try { |
117 | | - const data = await angVelocityMeasurements(variant, start, end); |
118 | | - console.log(logInfoMsgPrefix('ADCS angular velocity data fetched successfully')); |
119 | | - res.status(200).json({ |
120 | | - variant: variant, |
121 | | - start: start, |
122 | | - end: end, |
123 | | - data: data |
| 138 | + const queryResult = await angVelocityMeasurements.angVelocityMeasurements(variant, start, end); |
| 139 | + |
| 140 | + const merged = {}; |
| 141 | + |
| 142 | + queryResult.forEach(item => { |
| 143 | + const time = item._time; |
| 144 | + |
| 145 | + if (!merged[time]) { |
| 146 | + merged[time] = { |
| 147 | + variant: item.variant, |
| 148 | + timestamp: time, |
| 149 | + X: null, |
| 150 | + Y: null, |
| 151 | + Z: null |
| 152 | + }; |
| 153 | + } |
| 154 | + |
| 155 | + const axis = item._field.toUpperCase(); |
| 156 | + merged[time][axis] = item._value; |
| 157 | + |
124 | 158 | }); |
| 159 | + |
| 160 | + const finalOutput = Object.values(merged); |
| 161 | + console.log(logInfoMsgPrefix('ADCS angular velocity data fetched successfully')); |
| 162 | + |
| 163 | + res.status(200).json(finalOutput); |
| 164 | + |
125 | 165 | } catch (error) { |
126 | 166 | console.error(logErrorMsgPrefix('Error fetching ADCS angular velocity data'), error); |
127 | 167 | res.status(500).json({ error: 'Internal server error' }); |
|
0 commit comments