from typing import Union
from tenacity import retry, stop_after_attempt
from core.builtins import Bot
from database import session, auto_rollback_error
from .orm import ArcBindInfo
class ArcBindInfoManager:
@retry(stop=stop_after_attempt(3), reraise=True)
@auto_rollback_error
def __init__(self, msg: Bot.MessageSession):
self.targetId = msg.target.senderId
self.query = session.query(ArcBindInfo).filter_by(targetId=self.targetId).first()
if self.query is None:
session.add_all([ArcBindInfo(targetId=self.targetId, username='', friendcode='')])
session.commit()
def get_bind_friendcode(self) -> Union[str, None]:
bind_info = self.query.friendcode
if bind_info != '':
return bind_info
return None
def set_bind_info(self, username, friendcode):
self.query.username = username
self.query.friendcode = friendcode
return True
def remove_bind_info(self):
session.delete(self.query)