idb_sys/request/
request_ready_state.rs1use wasm_bindgen::JsValue;
2use web_sys::IdbRequestReadyState;
3
4use crate::Error;
5
6#[derive(Debug, Clone, Copy, PartialEq, Eq)]
8pub enum RequestReadyState {
9 Pending,
11 Done,
13}
14
15impl From<RequestReadyState> for IdbRequestReadyState {
16 fn from(state: RequestReadyState) -> Self {
17 match state {
18 RequestReadyState::Pending => IdbRequestReadyState::Pending,
19 RequestReadyState::Done => IdbRequestReadyState::Done,
20 }
21 }
22}
23
24impl TryFrom<IdbRequestReadyState> for RequestReadyState {
25 type Error = Error;
26
27 fn try_from(value: IdbRequestReadyState) -> Result<Self, Self::Error> {
28 match value {
29 IdbRequestReadyState::Pending => Ok(RequestReadyState::Pending),
30 IdbRequestReadyState::Done => Ok(RequestReadyState::Done),
31 _ => Err(Error::InvalidReqeustReadyState),
32 }
33 }
34}
35
36impl TryFrom<JsValue> for RequestReadyState {
37 type Error = Error;
38
39 fn try_from(value: JsValue) -> Result<Self, Self::Error> {
40 IdbRequestReadyState::from_js_value(&value)
41 .ok_or(Error::InvalidCursorDirection)?
42 .try_into()
43 }
44}
45
46impl From<RequestReadyState> for JsValue {
47 fn from(direction: RequestReadyState) -> Self {
48 let inner: IdbRequestReadyState = direction.into();
49 inner.into()
50 }
51}