Skip to content

Commit

Permalink
Merge pull request #58 from public-awesome/JakeHartnell/fixups
Browse files Browse the repository at this point in the history
Change TimeResponse return type
  • Loading branch information
shanev authored Feb 26, 2022
2 parents 7404e06 + 3e90ff2 commit 2f0c309
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 4 deletions.
60 changes: 60 additions & 0 deletions contracts/whitelist/schema/time_response.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,66 @@
],
"properties": {
"time": {
"$ref": "#/definitions/Expiration"
}
},
"definitions": {
"Expiration": {
"description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)",
"oneOf": [
{
"description": "AtHeight will expire when `env.block.height` >= height",
"type": "object",
"required": [
"at_height"
],
"properties": {
"at_height": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
},
"additionalProperties": false
},
{
"description": "AtTime will expire when `env.block.time` >= time",
"type": "object",
"required": [
"at_time"
],
"properties": {
"at_time": {
"$ref": "#/definitions/Timestamp"
}
},
"additionalProperties": false
},
{
"description": "Never will never expire. Used to express the empty variant",
"type": "object",
"required": [
"never"
],
"properties": {
"never": {
"type": "object"
}
},
"additionalProperties": false
}
]
},
"Timestamp": {
"description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```",
"allOf": [
{
"$ref": "#/definitions/Uint64"
}
]
},
"Uint64": {
"description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```",
"type": "string"
}
}
Expand Down
6 changes: 3 additions & 3 deletions contracts/whitelist/src/contract.rs
Original file line number Diff line number Diff line change
Expand Up @@ -174,14 +174,14 @@ pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult<Binary> {
fn query_start_time(deps: Deps) -> StdResult<TimeResponse> {
let config = CONFIG.load(deps.storage)?;
Ok(TimeResponse {
time: config.start_time.to_string(),
time: config.start_time,
})
}

fn query_end_time(deps: Deps) -> StdResult<TimeResponse> {
let config = CONFIG.load(deps.storage)?;
Ok(TimeResponse {
time: config.end_time.to_string(),
time: config.end_time,
})
}

Expand Down Expand Up @@ -268,7 +268,7 @@ mod tests {
let res = execute(deps.as_mut(), mock_env(), info, msg).unwrap();
assert_eq!(res.attributes.len(), 2);
let res = query_end_time(deps.as_ref()).unwrap();
assert_eq!(res.time, "expiration height: 10");
assert_eq!(res.time, Expiration::AtHeight(10));
}

#[test]
Expand Down
2 changes: 1 addition & 1 deletion contracts/whitelist/src/msg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ pub struct HasMemberResponse {

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct TimeResponse {
pub time: String,
pub time: Expiration,
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
Expand Down

0 comments on commit 2f0c309

Please sign in to comment.