Skip to content
Snippets Groups Projects

Update serialization of MobilityRecord

Merged Anthony GRAIGNIC requested to merge update-input-data-serialization into main
2 files
+ 10
15
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 9
14
@@ -6,7 +6,7 @@ use ethers::{
types::Bytes,
};
use primitive_types::U256;
use serde::Deserialize;
use serde::{Deserialize, Serialize};
use time::OffsetDateTime;
/// Mobility Record from Public Transportation
@@ -15,7 +15,7 @@ use time::OffsetDateTime;
///
/// CSV header:
/// id user_id network service label created_at from_coord from_label from_datetime from_latitude from_longitude to_coord to_label to_datetime to_latitude to_longitude
#[derive(Debug, Deserialize, Clone)]
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct MobilityRecord {
pub id: u64,
pub user_id: u64,
@@ -44,18 +44,12 @@ pub struct MobilityRecord {
}
impl MobilityRecord {
unsafe fn any_as_u8_slice<T: Sized>(p: &T) -> &[u8] {
::core::slice::from_raw_parts((p as *const T) as *const u8, ::core::mem::size_of::<T>())
}
// Convert to a byte array
// TODO: update serialization when CSV struct is in final version
pub fn to_bytes(&self) -> Bytes {
let bytes: &[u8] = unsafe {
::core::slice::from_raw_parts(
(self as *const MobilityRecord) as *const u8,
::core::mem::size_of::<MobilityRecord>(),
)
};
Bytes::from_static(bytes)
let serialized_mobility_record = serde_json::to_string(self).unwrap();
let bytes = serialized_mobility_record.as_bytes();
Bytes::from(bytes.to_vec())
}
}
@@ -192,7 +186,8 @@ mod tests {
// FIXME Binary data change between tests o
assert!(!result.to_string().is_empty());
// assert_eq!("0x", result.to_string());
assert_eq!("0x7b226964223a313333372c22757365725f6964223a312c226e6574776f726b223a226d756c686f757365222c2273657276696365223a225055424c49435f5452414e53504f5254222c226c6162656c223a22424c41424c41424c41222c22637265617465645f6174223a22323032332d31312d30375431303a33353a30385a222c2266726f6d5f636f6f7264223a6e756c6c2c2266726f6d5f6c6162656c223a6e756c6c2c2266726f6d5f6461746574696d65223a6e756c6c2c2266726f6d5f6c61746974756465223a6e756c6c2c2266726f6d5f6c6f6e676974756465223a6e756c6c2c22746f5f636f6f7264223a6e756c6c2c22746f5f6c6162656c223a6e756c6c2c22746f5f6461746574696d65223a6e756c6c2c22746f5f6c61746974756465223a6e756c6c2c22746f5f6c6f6e676974756465223a6e756c6c7d",
result.to_string());
}
#[test]
Loading