Skip to content

Commit 11267fa

Browse files
committed
feat(storage): implements object data query
1 parent 7c0eea3 commit 11267fa

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

contracts/cw-storage/src/contract.rs

+42
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult<Binary> {
121121
match msg {
122122
QueryMsg::Bucket {} => to_binary(&query::bucket(deps)?),
123123
QueryMsg::Object { id } => to_binary(&query::object(deps, id)?),
124+
QueryMsg::ObjectData { id } => to_binary(&query::data(deps, id)?),
124125
_ => Err(StdError::generic_err("Not implemented")),
125126
}
126127
}
@@ -154,6 +155,10 @@ pub mod query {
154155
.is_some(),
155156
})
156157
}
158+
159+
pub fn data(deps: Deps, id: ObjectId) -> StdResult<Binary> {
160+
DATA.load(deps.storage, id).map(Binary::from)
161+
}
157162
}
158163

159164
#[cfg(test)]
@@ -458,4 +463,41 @@ mod tests {
458463
assert!(!res.is_pinned);
459464
assert_eq!(res.size.u128(), 4u128);
460465
}
466+
467+
#[test]
468+
fn object_data() {
469+
let mut deps = mock_dependencies();
470+
let info = mock_info("creator", &[]);
471+
472+
let msg = InstantiateMsg {
473+
bucket: String::from("test"),
474+
limits: BucketLimits::new(),
475+
};
476+
instantiate(deps.as_mut(), mock_env(), info.clone(), msg).unwrap();
477+
478+
match query::object(
479+
deps.as_ref(),
480+
ObjectId::from("315d0d9ab12c5f8884100055f79de50b72db4bd2c9bfd3df049d89640fed1fa6"),
481+
)
482+
.err()
483+
.unwrap()
484+
{
485+
NotFound { .. } => (),
486+
_ => panic!("assertion failed"),
487+
}
488+
489+
let data = general_purpose::STANDARD.encode("okp4");
490+
let msg = ExecuteMsg::StoreObject {
491+
data: Binary::from_base64(data.as_str()).unwrap(),
492+
pin: false,
493+
};
494+
execute(deps.as_mut(), mock_env(), info, msg).unwrap();
495+
496+
let res = query::data(
497+
deps.as_ref(),
498+
ObjectId::from("315d0d9ab12c5f8884100055f79de50b72db4bd2c9bfd3df049d89640fed1fa6"),
499+
)
500+
.unwrap();
501+
assert_eq!(res, Binary::from_base64(data.as_str()).unwrap());
502+
}
461503
}

0 commit comments

Comments
 (0)