mirror of
https://gitflic.ru/project/maks1ms/ocab.git
synced 2025-11-28 10:21:55 +03:00
33 lines
886 B
Python
33 lines
886 B
Python
from peewee import fn
|
|
|
|
from ..models import FSMData
|
|
|
|
|
|
class FSMDataRepository:
|
|
def get(self, key: str):
|
|
return FSMData.get_or_none(key=key)
|
|
|
|
def set_state(self, key: str, state: str):
|
|
FSMData.insert(
|
|
key=key,
|
|
state=state,
|
|
data=fn.COALESCE(
|
|
FSMData.select(FSMData.data).where(FSMData.key == key), None
|
|
),
|
|
).on_conflict(
|
|
conflict_target=[FSMData.key],
|
|
update={FSMData.state: state},
|
|
).execute()
|
|
|
|
def set_data(self, key: str, data: str):
|
|
FSMData.insert(
|
|
key=key,
|
|
data=data,
|
|
state=fn.COALESCE(
|
|
FSMData.select(FSMData.state).where(FSMData.key == key), None
|
|
),
|
|
).on_conflict(
|
|
conflict_target=[FSMData.key],
|
|
update={FSMData.data: data},
|
|
).execute()
|