Validation
Beispiel
export const validateTelemetryData = (data) => {
const violations = {};
if (!data.spacecraftId) {
violations.spacecraftId = { message: 'Attribute is required' };
}
if (!data.timestamp) {
violations.timestamp = { message: 'Attribute is required' };
} else if (!isIsoDate(data.timestamp)) {
violations.timestamp = { message: 'Attribute must be in ISO 8601 format' };
}
if (!data.metrics) {
violations.metrics = { message: 'Attribute is required' };
} else if (typeof data.metrics !== 'object') {
violations.metrics = { message: 'Attribute must be an object' };
}
if (!data.events) {
violations.events = { message: 'Attribute is required' };
} else if (!Array.isArray(data.events)) {
violations.events = { message: 'Attribute must be an array' };
} else {
data.events.forEach((event, i) => {
if (!event.timestamp) {
violations[`events[${i}].timestamp`] = { message: 'Attribute is required' };
} else if (!isIsoDate(event.timestamp)) {
violations[`events[${i}].timestamp`] = { message: 'Attribute must be in ISO 8601 format' };
}
if (!event.type) {
violations[`events[${i}].type`] = { message: 'Attribute is required' };
}
});
}
return Object.keys(violations).length > 0 ? violations : null;
};
const isIsoDate = (str) => {
if (!/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/.test(str)) return false;
const d = new Date(str);
return !Number.isNaN(d.getTime()) && d.toISOString() === str;
};
Last updated