Archived
1
0
Fork 0
This repository has been archived on 2024-04-26. You can view files and clone it, but cannot push or open issues or pull requests.
akari-bot/modules/cytoid/dbutils.py

42 lines
1.3 KiB
Python
Raw Normal View History

from typing import Union
from tenacity import retry, stop_after_attempt
2023-02-05 14:33:33 +00:00
from core.builtins import Bot
from database import session, auto_rollback_error
from .orm import CytoidBindInfo
class CytoidBindInfoManager:
@retry(stop=stop_after_attempt(3), reraise=True)
@auto_rollback_error
2023-02-05 14:33:33 +00:00
def __init__(self, msg: Bot.MessageSession):
2023-09-01 14:38:32 +00:00
self.target_id = msg.target.sender_id
2023-09-03 08:58:46 +00:00
self.query = session.query(CytoidBindInfo).filter_by(targetId=self.target_id).first()
if self.query is None:
2023-09-03 08:58:46 +00:00
session.add_all([CytoidBindInfo(targetId=self.target_id, username='')])
session.commit()
2023-09-03 08:58:46 +00:00
self.query = session.query(CytoidBindInfo).filter_by(targetId=self.target_id).first()
@retry(stop=stop_after_attempt(3), reraise=True)
@auto_rollback_error
def get_bind_username(self) -> Union[str, None]:
bind_info = self.query.username
if bind_info != '':
return bind_info
return None
@retry(stop=stop_after_attempt(3), reraise=True)
@auto_rollback_error
def set_bind_info(self, username):
self.query.username = username
session.commit()
return True
@retry(stop=stop_after_attempt(3), reraise=True)
@auto_rollback_error
def remove_bind_info(self):
session.delete(self.query)
session.commit()
return True