Use numbers for `LocalTime` timestamps

Instead of using strings, use numbers.

*This is a breaking change and affects `config.json` parsing.*

To upgrade, simply unquote any number in your `config.json`.
This commit is contained in:
Alexis Sellier 2023-07-27 18:30:30 +02:00
parent 693f0a2c44
commit 26e3c0fbff
No known key found for this signature in database
3 changed files with 13 additions and 17 deletions

View File

@ -139,7 +139,7 @@ pub(crate) fn patch(
"discussions": rev.discussion().comments() "discussions": rev.discussion().comments()
.map(|(id, comment)| Comment::new(id, comment, aliases)) .map(|(id, comment)| Comment::new(id, comment, aliases))
.collect::<Vec<_>>(), .collect::<Vec<_>>(),
"timestamp": rev.timestamp().as_secs().to_string(), "timestamp": rev.timestamp().as_secs(),
"reviews": rev.reviews().map(|(nid, _review)| review(nid, aliases.alias(nid), _review)).collect::<Vec<_>>(), "reviews": rev.reviews().map(|(nid, _review)| review(nid, aliases.alias(nid), _review)).collect::<Vec<_>>(),
}) })
}).collect::<Vec<_>>(), }).collect::<Vec<_>>(),
@ -166,7 +166,7 @@ fn merge(merge: &Merge, nid: &NodeId, alias: Option<Alias>) -> Value {
"alias": alias, "alias": alias,
}, },
"commit": merge.commit, "commit": merge.commit,
"timestamp": merge.timestamp.as_secs().to_string(), "timestamp": merge.timestamp.as_secs(),
"revision": merge.revision, "revision": merge.revision,
}), }),
None => json!({ None => json!({
@ -174,7 +174,7 @@ fn merge(merge: &Merge, nid: &NodeId, alias: Option<Alias>) -> Value {
"id": nid, "id": nid,
}, },
"commit": merge.commit, "commit": merge.commit,
"timestamp": merge.timestamp.as_secs().to_string(), "timestamp": merge.timestamp.as_secs(),
"revision": merge.revision, "revision": merge.revision,
}), }),
} }
@ -191,7 +191,7 @@ fn review(nid: &NodeId, alias: Option<Alias>, review: &Review) -> Value {
"verdict": review.verdict(), "verdict": review.verdict(),
"summary": review.summary(), "summary": review.summary(),
"comments": review.comments().collect::<Vec<_>>(), "comments": review.comments().collect::<Vec<_>>(),
"timestamp": review.timestamp().as_secs().to_string(), "timestamp": review.timestamp().as_secs(),
}), }),
None => json!({ None => json!({
"author": { "author": {
@ -200,7 +200,7 @@ fn review(nid: &NodeId, alias: Option<Alias>, review: &Review) -> Value {
"verdict": review.verdict(), "verdict": review.verdict(),
"summary": review.summary(), "summary": review.summary(),
"comments": review.comments().collect::<Vec<_>>(), "comments": review.comments().collect::<Vec<_>>(),
"timestamp": review.timestamp().as_secs().to_string(), "timestamp": review.timestamp().as_secs(),
}), }),
} }
} }

View File

@ -37,7 +37,7 @@ pub const ISSUE_ID: &str = "5ad77fa3f476beed9a26f49b2b3b844e61bef792";
pub const ISSUE_DISCUSSION_ID: &str = "f1dff128a22e8183a23516dd9812e72e80914c92"; pub const ISSUE_DISCUSSION_ID: &str = "f1dff128a22e8183a23516dd9812e72e80914c92";
pub const ISSUE_COMMENT_ID: &str = "845218041bf9eb8155bfa4aaa8f0c91ce18e5c13"; pub const ISSUE_COMMENT_ID: &str = "845218041bf9eb8155bfa4aaa8f0c91ce18e5c13";
pub const SESSION_ID: &str = "u9MGAkkfkMOv0uDDB2WeUHBT7HbsO2Dy"; pub const SESSION_ID: &str = "u9MGAkkfkMOv0uDDB2WeUHBT7HbsO2Dy";
pub const TIMESTAMP: &str = "1671125284"; pub const TIMESTAMP: u64 = 1671125284;
pub const CONTRIBUTOR_RID: &str = "rad:z4XaCmN3jLSeiMvW15YTDpNbDHFhG"; pub const CONTRIBUTOR_RID: &str = "rad:z4XaCmN3jLSeiMvW15YTDpNbDHFhG";
pub const CONTRIBUTOR_DID: &str = "did:key:z6Mkk7oqY4pPxhMmGEotDYsFo97vhCj85BLY1H256HrJmjN8"; pub const CONTRIBUTOR_DID: &str = "did:key:z6Mkk7oqY4pPxhMmGEotDYsFo97vhCj85BLY1H256HrJmjN8";
pub const CONTRIBUTOR_NID: &str = "z6Mkk7oqY4pPxhMmGEotDYsFo97vhCj85BLY1H256HrJmjN8"; pub const CONTRIBUTOR_NID: &str = "z6Mkk7oqY4pPxhMmGEotDYsFo97vhCj85BLY1H256HrJmjN8";
@ -97,7 +97,7 @@ fn seed_with_signer<G: Signer>(dir: &Path, profile: radicle::Profile, signer: &G
let workdir = dir.join("hello-world"); let workdir = dir.join("hello-world");
env::set_var("RAD_COMMIT_TIME", TIMESTAMP); env::set_var("RAD_COMMIT_TIME", TIMESTAMP.to_string());
fs::create_dir_all(&workdir).unwrap(); fs::create_dir_all(&workdir).unwrap();

View File

@ -29,22 +29,20 @@ pub mod string {
pub mod localtime { pub mod localtime {
pub mod time { pub mod time {
use localtime::LocalTime; use localtime::LocalTime;
use serde::{de, Deserialize, Deserializer, Serializer}; use serde::{Deserialize, Deserializer, Serializer};
pub fn serialize<S>(value: &LocalTime, serializer: S) -> Result<S::Ok, S::Error> pub fn serialize<S>(value: &LocalTime, serializer: S) -> Result<S::Ok, S::Error>
where where
S: Serializer, S: Serializer,
{ {
serializer.collect_str(&value.as_secs()) serializer.serialize_u64(value.as_secs())
} }
pub fn deserialize<'de, D>(deserializer: D) -> Result<LocalTime, D::Error> pub fn deserialize<'de, D>(deserializer: D) -> Result<LocalTime, D::Error>
where where
D: Deserializer<'de>, D: Deserializer<'de>,
{ {
let seconds: u64 = String::deserialize(deserializer)? let seconds = u64::deserialize(deserializer)?;
.parse()
.map_err(de::Error::custom)?;
Ok(LocalTime::from_secs(seconds)) Ok(LocalTime::from_secs(seconds))
} }
@ -52,22 +50,20 @@ pub mod localtime {
pub mod duration { pub mod duration {
use localtime::LocalDuration; use localtime::LocalDuration;
use serde::{de, Deserialize, Deserializer, Serializer}; use serde::{Deserialize, Deserializer, Serializer};
pub fn serialize<S>(value: &LocalDuration, serializer: S) -> Result<S::Ok, S::Error> pub fn serialize<S>(value: &LocalDuration, serializer: S) -> Result<S::Ok, S::Error>
where where
S: Serializer, S: Serializer,
{ {
serializer.collect_str(&value.as_secs()) serializer.serialize_u64(value.as_secs())
} }
pub fn deserialize<'de, D>(deserializer: D) -> Result<LocalDuration, D::Error> pub fn deserialize<'de, D>(deserializer: D) -> Result<LocalDuration, D::Error>
where where
D: Deserializer<'de>, D: Deserializer<'de>,
{ {
let seconds: u64 = String::deserialize(deserializer)? let seconds = u64::deserialize(deserializer)?;
.parse()
.map_err(de::Error::custom)?;
Ok(LocalDuration::from_secs(seconds)) Ok(LocalDuration::from_secs(seconds))
} }