use crate::{DoProxy, Proxy};
pub trait EnvExt {
fn obj<Obj>(&self, name: &str) -> Result<Proxy<Obj>, worker::Error>
where
Obj: DoProxy;
fn obj_from_id<Obj>(&self, id: &str) -> Result<Proxy<Obj>, worker::Error>
where
Obj: DoProxy;
fn unique_obj<Obj>(&self) -> Result<Proxy<Obj>, worker::Error>
where
Obj: DoProxy;
}
impl EnvExt for worker::Env {
fn obj<Obj>(&self, name: &str) -> Result<Proxy<Obj>, worker::Error>
where
Obj: DoProxy,
{
let binding = self.durable_object(Obj::BINDING)?;
let obj = binding.id_from_name(name)?;
let stub = obj.get_stub()?;
Ok(Proxy::new(stub))
}
fn obj_from_id<Obj>(&self, id: &str) -> Result<Proxy<Obj>, worker::Error>
where
Obj: DoProxy,
{
let binding = self.durable_object(Obj::BINDING)?;
let obj = binding.id_from_string(id)?;
let stub = obj.get_stub()?;
Ok(Proxy::new(stub))
}
fn unique_obj<Obj>(&self) -> Result<Proxy<Obj>, worker::Error>
where
Obj: DoProxy,
{
let binding = self.durable_object(Obj::BINDING)?;
let obj = binding.unique_id()?;
let stub = obj.get_stub()?;
Ok(Proxy::new(stub))
}
}