def delete(self) -> DBResult: session = NBdb().get_session() try: if self.auth_type == 'user': auth = session.query(AuthUser).join(User). \ filter(AuthUser.user_id == User.id). \ filter(User.qq == self.auth_id). \ filter(AuthUser.auth_node == self.auth_node).one() session.delete(auth) session.commit() result = DBResult(error=False, info='Success', result=0) elif self.auth_type == 'group': auth = session.query(AuthGroup).join(Group). \ filter(AuthGroup.group_id == Group.id). \ filter(Group.group_id == self.auth_id). \ filter(AuthGroup.auth_node == self.auth_node).one() session.delete(auth) session.commit() result = DBResult(error=False, info='Success', result=0) else: result = DBResult(error=True, info='Auth type error', result=-1) except NoResultFound: result = DBResult(error=True, info='NoResultFound', result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() return result
def add(self, dynamic_type: int, content: str) -> DBResult: session = NBdb().get_session() try: exist_dynamic = session.query(Bilidynamic).\ filter(Bilidynamic.uid == self.uid).\ filter(Bilidynamic.dynamic_id == self.dynamic_id).one() exist_dynamic.content += f'\nupdate: {datetime.now()}\n{content}' exist_dynamic.updated_at = datetime.now() session.commit() result = DBResult(error=False, info='Success upgrade', result=0) except NoResultFound: try: # 动态表中添加新动态 new_dynamic = Bilidynamic(uid=self.uid, dynamic_id=self.dynamic_id, dynamic_type=dynamic_type, content=content, created_at=datetime.now()) session.add(new_dynamic) session.commit() result = DBResult(error=False, info='Success added', result=0) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() return result
def add(self) -> DBResult: session = NBdb().get_session() try: exist_pixivtag = session.query(PixivTag).filter( PixivTag.tagname == self.tagname).one() result = DBResult(error=False, info='pixivtag exist', result=0) except NoResultFound: try: # 动态表中添加新动态 new_tag = PixivTag(tagname=self.tagname, created_at=datetime.now()) session.add(new_tag) session.commit() result = DBResult(error=False, info='Success added', result=0) except Exception as e: result = DBResult(error=True, info=repr(e), result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() return result
def delete(self) -> DBResult: session = NBdb().get_session() try: # 清空群成员表中该用户 for exist_user in session.query(UserGroup).filter( UserGroup.user_id == self.id().result).all(): session.delete(exist_user) # 删除技能 self.skill_clear() # 删除状态和假期 self.status_del() exist_user = session.query(User).filter(User.qq == self.qq).one() session.delete(exist_user) session.commit() result = DBResult(error=False, info='Success', result=0) except NoResultFound: result = DBResult(error=True, info='NoResultFound', result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() return result
def permission_set(self, notice: int = 0, command: int = 0, level: int = 0) -> DBResult: session = NBdb().get_session() # 检查群组是否在表中, 存在则直接更新状态 try: exist_group = session.query(Group).filter( Group.group_id == self.group_id).one() exist_group.notice_permissions = notice exist_group.command_permissions = command exist_group.permission_level = level exist_group.updated_at = datetime.now() session.commit() result = DBResult(error=False, info='Success', result=0) except NoResultFound: result = DBResult(error=True, info='NoResultFound', result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() return result
def add(self, name: str) -> DBResult: session = NBdb().get_session() try: # qq群已存在则更新群名称 exist_group = session.query(Group).filter( Group.group_id == self.group_id).one() exist_group.name = name exist_group.updated_at = datetime.now() session.commit() result = DBResult(error=False, info='Success upgraded', result=0) except NoResultFound: # 不存在则添加新群组 try: new_group = Group(group_id=self.group_id, name=name, notice_permissions=0, command_permissions=0, permission_level=0, created_at=datetime.now()) session.add(new_group) session.commit() result = DBResult(error=False, info='Success added', result=0) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() return result
def subscription_del(self, sub: DBSubscription) -> DBResult: if self.exist() and sub.exist(): session = NBdb().get_session() # 查询成员-群组表中用户-群关系 try: # 用户-群关系已存在, 删除 exist_subscription = session.query(GroupSub). \ filter(GroupSub.group_id == self.id().result). \ filter(GroupSub.sub_id == sub.id().result).one() session.delete(exist_subscription) session.commit() result = DBResult(error=False, info='Success', result=0) except NoResultFound: result = DBResult(error=True, info='NoResultFound', result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() else: result = DBResult(error=True, info='Group or subscription not exist', result=-1) return result
def mailbox_del(self, mailbox: DBEmailBox) -> DBResult: if self.exist() and mailbox.exist(): session = NBdb().get_session() try: # 群邮箱已存在, 更新信息 exist_mailbox = session.query(GroupEmailBox). \ filter(GroupEmailBox.group_id == self.id().result). \ filter(GroupEmailBox.email_box_id == mailbox.id().result).one() session.delete(exist_mailbox) session.commit() result = DBResult(error=False, info='Success', result=0) except NoResultFound: result = DBResult(error=True, info='NoResultFound', result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() else: result = DBResult(error=True, info='Group or mailbox not exist', result=-1) return result
def skill_del(self, skill: DBSkill) -> DBResult: if self.exist() and skill.exist(): session = NBdb().get_session() # 查询用户已有技能 try: # 已有技能, 删除 exist_skill = session.query(UserSkill). \ filter(UserSkill.skill_id == skill.id().result). \ filter(UserSkill.user_id == self.id().result).one() session.delete(exist_skill) session.commit() result = DBResult(error=False, info='Success', result=0) except NoResultFound: result = DBResult(error=True, info='NoResultFound', result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() else: result = DBResult(error=True, info='Skill or user not exist', result=-1) return result
def add(self, up_name: str, live_info: str = None) -> DBResult: session = NBdb().get_session() try: # 已存在则更新描述 exist_subscription = session.query(Subscription).filter(Subscription.sub_type == self.sub_type).\ filter(Subscription.sub_id == self.sub_id).one() exist_subscription.up_name = up_name exist_subscription.live_info = live_info exist_subscription.updated_at = datetime.now() session.commit() result = DBResult(error=False, info='Success upgraded', result=0) except NoResultFound: # 不存在则添加新订阅信息 try: new_subscription = Subscription(sub_type=self.sub_type, sub_id=self.sub_id, up_name=up_name, live_info=live_info, created_at=datetime.now()) session.add(new_subscription) session.commit() result = DBResult(error=False, info='Success added', result=0) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() return result
def add(self, description: str) -> DBResult: session = NBdb().get_session() try: # 已存在则更新描述 exist_skill = session.query(Skill).filter( Skill.name == self.name).one() exist_skill.description = description exist_skill.updated_at = datetime.now() session.commit() result = DBResult(error=False, info='Success upgraded', result=0) except NoResultFound: # 不存在则添加新技能 try: new_skill = Skill(name=self.name, description=description, created_at=datetime.now()) session.add(new_skill) session.commit() result = DBResult(error=False, info='Success added', result=0) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() return result
def add(self, date: str, header: str, sender: str, to: str = None, body: str = None, html: str = None) -> DBResult: session = NBdb().get_session() try: new_email = Email(mail_hash=self.mail_hash, date=date, header=header, sender=sender, to=to, body=body, html=html, created_at=datetime.now()) session.add(new_email) session.commit() result = DBResult(error=False, info='Success added', result=0) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() return result
def add_global_cool_down_event(cls, stop_at: datetime, description: str = None) -> DBResult: session = NBdb().get_session() try: exist_event = session.query(CoolDownEvent).filter( CoolDownEvent.event_type == 'global').one() exist_event.stop_at = stop_at exist_event.description = description exist_event.updated_at = datetime.now() session.commit() result = DBResult(error=False, info='Success upgraded', result=0) except NoResultFound: try: new_event = CoolDownEvent(event_type='global', stop_at=stop_at, description=description, created_at=datetime.now()) session.add(new_event) session.commit() result = DBResult(error=False, info='Success added', result=0) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() return result
def member_del(self, user: DBUser) -> DBResult: if self.exist() and user.exist(): session = NBdb().get_session() # 查询成员-群组表中用户-群关系 try: # 用户-群关系已存在, 删除 exist_user = session.query(UserGroup). \ filter(UserGroup.user_id == user.id().result). \ filter(UserGroup.group_id == self.id().result).one() session.delete(exist_user) session.commit() result = DBResult(error=False, info='Success', result=0) except NoResultFound: result = DBResult(error=True, info='NoResultFound', result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() else: result = DBResult(error=True, info='Group or user not exist', result=-1) return result
def clear_time_out_event(cls): session = NBdb().get_session() events = session.query(CoolDownEvent).order_by(CoolDownEvent.id).all() for event in events: try: if datetime.now() >= event.stop_at: session.delete(event) session.commit() except Exception: session.rollback() continue
def vocation_set(self, stop_time: datetime, reason: str = None) -> DBResult: if self.exist(): session = NBdb().get_session() # 检查用户在假期表中是否存在 try: # 存在则设置假期状态信息 exist_status = session.query(Vocation).filter( Vocation.user_id == self.id().result).one() exist_status.status = 1 exist_status.stop_at = stop_time exist_status.reason = reason exist_status.updated_at = datetime.now() session.commit() result = DBResult(error=False, info='Success upgraded', result=0) except NoResultFound: # 不存在则假期表中添加信息 try: new_status = Vocation(user_id=self.id().result, status=1, stop_at=stop_time, reason=reason, created_at=datetime.now()) session.add(new_status) session.commit() result = DBResult(error=False, info='Success set', result=0) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() else: result = DBResult(error=True, info='User not exist', result=-1) return result
def mailbox_add(self, mailbox: DBEmailBox, mailbox_info: str = None) -> DBResult: if self.exist() and mailbox.exist(): session = NBdb().get_session() try: # 群邮箱已存在, 更新信息 exist_mailbox = session.query(GroupEmailBox). \ filter(GroupEmailBox.group_id == self.id().result). \ filter(GroupEmailBox.email_box_id == mailbox.id().result).one() exist_mailbox.box_info = mailbox_info exist_mailbox.updated_at = datetime.now() session.commit() result = DBResult(error=False, info='Success upgraded', result=0) except NoResultFound: # 不存在关系则添加新邮箱 try: new_mailbox = GroupEmailBox( email_box_id=mailbox.id().result, group_id=self.id().result, box_info=mailbox_info, created_at=datetime.now()) session.add(new_mailbox) session.commit() result = DBResult(error=False, info='Success added', result=0) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() else: result = DBResult(error=True, info='Group or mailbox not exist', result=-1) return result
def add(self, sub_type: str = None, group_id: int = None, user_id: int = None, user_name: str = None, raw_data: str = None, msg_data: str = None) -> DBResult: session = NBdb().get_session() try: new_event = History(time=self.time, self_id=self.self_id, post_type=self.post_type, detail_type=self.detail_type, sub_type=sub_type, group_id=group_id, user_id=user_id, user_name=user_name, raw_data=raw_data, msg_data=msg_data, created_at=datetime.now()) session.add(new_event) session.commit() result = DBResult(error=False, info='Success added', result=0) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() return result
def subscription_add(self, sub: DBSubscription, group_sub_info: str = None) -> DBResult: if self.exist() and sub.exist(): session = NBdb().get_session() try: # 订阅关系已存在, 更新信息 exist_subscription = session.query(GroupSub). \ filter(GroupSub.group_id == self.id().result). \ filter(GroupSub.sub_id == sub.id().result).one() exist_subscription.group_sub_info = group_sub_info exist_subscription.updated_at = datetime.now() session.commit() result = DBResult(error=False, info='Success upgraded', result=0) except NoResultFound: # 不存在关系则添加新成员 try: subscription = GroupSub(sub_id=sub.id().result, group_id=self.id().result, group_sub_info=group_sub_info, created_at=datetime.now()) session.add(subscription) session.commit() result = DBResult(error=False, info='Success added', result=0) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() else: result = DBResult(error=True, info='Group or subscription not exist', result=-1) return result
def member_add(self, user: DBUser, user_group_nickname: str) -> DBResult: if self.exist() and user.exist(): session = NBdb().get_session() # 查询成员-群组表中用户-群关系 try: # 用户-群关系已存在, 更新用户群昵称 exist_user = session.query(UserGroup). \ filter(UserGroup.user_id == user.id().result). \ filter(UserGroup.group_id == self.id().result).one() exist_user.user_group_nickname = user_group_nickname exist_user.updated_at = datetime.now() session.commit() result = DBResult(error=False, info='Success upgraded', result=0) except NoResultFound: # 不存在关系则添加新成员 try: new_user = UserGroup( user_id=user.id().result, group_id=self.id().result, user_group_nickname=user_group_nickname, created_at=datetime.now()) session.add(new_user) session.commit() result = DBResult(error=False, info='Success added', result=0) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() else: result = DBResult(error=True, info='Group or user not exist', result=-1) return result
def able_member_clear(self) -> DBResult: if self.exist(): session = NBdb().get_session() # 查询成员-技能表中用户-技能关系 try: for exist_user_skill in session.query(UserSkill).filter( UserSkill.skill_id == self.id().result).all(): session.delete(exist_user_skill) session.commit() result = DBResult(error=False, info='Success', result=0) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() else: result = DBResult(error=True, info='Skill not exist', result=-1) return result
def skill_add(self, skill: DBSkill, skill_level: int) -> DBResult: if self.exist() and skill.exist(): session = NBdb().get_session() # 查询用户已有技能 try: # 已有技能, 更新等级 exist_skill = session.query(UserSkill). \ filter(UserSkill.skill_id == skill.id().result). \ filter(UserSkill.user_id == self.id().result).one() exist_skill.skill_level = skill_level exist_skill.updated_at = datetime.now() session.commit() result = DBResult(error=False, info='Success upgraded', result=0) except NoResultFound: # 不存在则添加新技能 try: new_skill = UserSkill(user_id=self.id().result, skill_id=skill.id().result, skill_level=skill_level, created_at=datetime.now()) session.add(new_skill) session.commit() result = DBResult(error=False, info='Success added', result=0) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() else: result = DBResult(error=True, info='Skill or user not exist', result=-1) return result
def sub_group_clear(self) -> DBResult: if self.exist(): session = NBdb().get_session() try: for exist_group_sub in session.query(GroupSub).filter( GroupSub.sub_id == self.id().result).all(): session.delete(exist_group_sub) session.commit() result = DBResult(error=False, info='Success', result=0) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() else: result = DBResult(error=True, info='Subscription not exist', result=-1) return result
def status_del(self) -> DBResult: if self.exist(): session = NBdb().get_session() try: exist_status = session.query(Vocation).filter( Vocation.user_id == self.id().result).one() session.delete(exist_status) session.commit() result = DBResult(error=False, info='Success', result=0) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() else: result = DBResult(error=True, info='Status or user not exist', result=-1) return result
def delete(self) -> DBResult: session = NBdb().get_session() try: exist_box = session.query(EmailBox).filter( EmailBox.address == self.address).one() session.delete(exist_box) session.commit() result = DBResult(error=False, info='Success', result=0) except NoResultFound: result = DBResult(error=True, info='NoResultFound', result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() return result
def mailbox_clear(self) -> DBResult: if self.exist(): session = NBdb().get_session() # 查询成员-群组表中用户-群关系 try: for exist_mailbox in \ session.query(GroupEmailBox).filter(GroupEmailBox.group_id == self.id().result).all(): session.delete(exist_mailbox) session.commit() result = DBResult(error=False, info='Success', result=0) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() else: result = DBResult(error=True, info='Group or mailbox not exist', result=-1) return result
def add(self, title: str, description: str, tags: str, illust_id: str, url: str) -> DBResult: session = NBdb().get_session() try: exist_pixivision = session.query(Pixivision).filter( Pixivision.aid == self.aid).one() exist_pixivision.title = title exist_pixivision.description = description exist_pixivision.tags = tags exist_pixivision.illust_id = illust_id exist_pixivision.url = url exist_pixivision.updated_at = datetime.now() session.commit() result = DBResult(error=False, info='Success upgrade', result=0) except NoResultFound: try: # 动态表中添加新动态 new_pixivision = Pixivision(aid=self.aid, title=title, description=description, tags=tags, illust_id=illust_id, url=url, created_at=datetime.now()) session.add(new_pixivision) session.commit() result = DBResult(error=False, info='Success added', result=0) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() return result
def add(self, server_host: str, password: str, port: int = 993) -> DBResult: session = NBdb().get_session() try: # 已存在则更新 exist_box = session.query(EmailBox).filter( EmailBox.address == self.address).one() exist_box.server_host = server_host exist_box.port = port exist_box.password = password exist_box.updated_at = datetime.now() session.commit() result = DBResult(error=False, info='Success upgraded', result=0) except NoResultFound: # 不存在则添加 try: new_box = EmailBox(address=self.address, server_host=server_host, password=password, port=port, created_at=datetime.now()) session.add(new_box) session.commit() result = DBResult(error=False, info='Success added', result=0) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() return result
def delete(self) -> DBResult: session = NBdb().get_session() try: # 清空持已订阅这个sub的群组 self.sub_group_clear() exist_subscription = session.query(Subscription).filter(Subscription.sub_type == self.sub_type).\ filter(Subscription.sub_id == self.sub_id).one() session.delete(exist_subscription) session.commit() result = DBResult(error=False, info='Success', result=0) except NoResultFound: result = DBResult(error=True, info='NoResultFound', result=-1) except MultipleResultsFound: result = DBResult(error=True, info='MultipleResultsFound', result=-1) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() return result
def subscription_clear_by_type(self, sub_type: int) -> DBResult: if self.exist(): session = NBdb().get_session() # 查询成员-群组表中用户-群关系 try: for exist_group_sub in session.query(GroupSub).join(Subscription).\ filter(GroupSub.sub_id == Subscription.id). \ filter(Subscription.sub_type == sub_type). \ filter(GroupSub.group_id == self.id().result).all(): session.delete(exist_group_sub) session.commit() result = DBResult(error=False, info='Success', result=0) except Exception as e: session.rollback() result = DBResult(error=True, info=repr(e), result=-1) finally: session.close() else: result = DBResult(error=True, info='Group or subscription not exist', result=-1) return result