Ejemplo n.º 1
0
 async def put(self, key: str, value: StateData) -> None:
     logger.debug(f"put, key={key}, value={value}")
     pre_state = await self.get(key)
     if pre_state is not None:
         value.pre_state = pre_state.current_state
         self.data[key] = value.json()
     self.data[key] = value.json()
Ejemplo n.º 2
0
 async def put(self, key: str, value: StateData) -> None:
     conn = await self.redis()
     logger.debug(f"put, key={key}, value={value}")
     pre_state = await self.get(key)
     if pre_state is not None:
         value.pre_state = pre_state.current_state
         await conn.set(key, value.json())
     await conn.set(key, value.json())
Ejemplo n.º 3
0
async def back_to_pre_state_(storage: BaseStorage, user_id: str,
                             data: Data) -> None:
    state = await storage.get(user_id)
    if state is None:
        raise ValueError("Type of state not supported")
    if state.pre_state is None:
        state_data = StateData(current_state=state.current_state, data=data)
    else:
        state_data = StateData(current_state=state.pre_state, data=data)
    await storage.put(user_id, state_data)
Ejemplo n.º 4
0
 async def set_next_state(self,
                          state_name: str,
                          *,
                          data: Data = None) -> None:
     logger.debug(f"set_next_state, state_name={state_name}, data={data}")
     state_data = StateData(current_state=state_name, data=data)
     await self.storage.put(str(self.context.object.object.message.from_id),
                            state_data)
Ejemplo n.º 5
0
async def get_state_name(user_id: str, storage: BaseStorage,
                         default: str) -> str:
    """Get the name of the state in the storage."""
    user_state = await storage.get(user_id)
    if not user_state:
        user_state = StateData(current_state=default)
        await storage.put(user_id, user_state)
    return user_state.current_state
Ejemplo n.º 6
0
 async def get(
     self,
     key: str,
     default: typing.Optional[StateData] = None
 ) -> typing.Optional[StateData]:
     logger.debug(f"get, key={key}, default={default}")
     key_ = self.data.get(key)
     if key_:
         return StateData.parse_raw(key_)
     return default
Ejemplo n.º 7
0
def state_data():
    return StateData(pre_state="home", current_state="home")