Skip to content

Commit

Permalink
Use u64 serialization of Snowflake for non human readable serializers
Browse files Browse the repository at this point in the history
  • Loading branch information
majkrzak committed Sep 1, 2024
1 parent acb1f7b commit dc36e13
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions src/model/id.rs
Original file line number Diff line number Diff line change
Expand Up @@ -343,12 +343,20 @@ mod snowflake {
use serde::{Deserializer, Serializer};

pub fn deserialize<'de, D: Deserializer<'de>>(deserializer: D) -> Result<NonZeroU64, D::Error> {
deserializer.deserialize_any(SnowflakeVisitor)
if deserializer.is_human_readable() {
deserializer.deserialize_any(SnowflakeVisitor)
} else {
deserializer.deserialize_u64(SnowflakeVisitor)
}
}

#[allow(clippy::trivially_copy_pass_by_ref)]
pub fn serialize<S: Serializer>(id: &NonZeroU64, serializer: S) -> Result<S::Ok, S::Error> {
serializer.collect_str(&id.get())
if serializer.is_human_readable() {
serializer.collect_str(&id.get())
} else {
serializer.serialize_u64(id.get())
}
}

struct SnowflakeVisitor;
Expand Down

0 comments on commit dc36e13

Please sign in to comment.