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:
parent
693f0a2c44
commit
26e3c0fbff
|
|
@ -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(),
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue