Add storage, syncing db, rename module

This commit is contained in:
BarsTiger
2023-10-08 21:21:15 +03:00
parent 42d7f7d235
commit 0135294fcb
25 changed files with 281 additions and 2 deletions

View File

@@ -0,0 +1 @@
from .in_db import InDbStorage

36
bot/modules/fsm/in_db.py Normal file
View File

@@ -0,0 +1,36 @@
from bot.modules.database import db
from dataclasses import dataclass, field
from typing import Any, DefaultDict, Dict, Optional
from aiogram.fsm.state import State
from aiogram.fsm.storage.base import (
BaseStorage,
StateType,
StorageKey,
)
@dataclass
class MemoryStorageRecord:
data: Dict[str, Any] = field(default_factory=dict)
state: Optional[str] = None
class InDbStorage(BaseStorage):
def __init__(self) -> None:
self.storage: DefaultDict[StorageKey, MemoryStorageRecord] = db.fsm
async def close(self) -> None:
pass
async def set_state(self, key: StorageKey, state: StateType = None) -> None:
self.storage[key].state = state.state if isinstance(state, State) else state
async def get_state(self, key: StorageKey) -> Optional[str]:
return self.storage[key].state
async def set_data(self, key: StorageKey, data: Dict[str, Any]) -> None:
self.storage[key].data = data.copy()
async def get_data(self, key: StorageKey) -> Dict[str, Any]:
return self.storage[key].data.copy()