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 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 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 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 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 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 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 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 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 delete(self) -> DBResult: session = NBdb().get_session() try: # 清空持有这个技能人的技能 self.able_member_clear() exist_skill = session.query(Skill).filter( Skill.name == self.name).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() 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
def delete(self) -> DBResult: session = NBdb().get_session() try: # 清空群成员列表 self.member_clear() # 清空订阅 self.subscription_clear() exist_group = session.query(Group).filter( Group.group_id == self.group_id).one() session.delete(exist_group) 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, uid: int, title: str, uname: str, nsfw_tag: int, tags: List[str], url: str) -> DBResult: session = NBdb().get_session() # 将tag写入pixiv_tag表 for tag in tags: _tag = DBPixivtag(tagname=tag) _tag.add() # 将作品信息写入pixiv_illust表 try: exist_illust = session.query(Pixiv).filter(Pixiv.pid == self.pid).one() exist_illust.title = title exist_illust.uname = uname if nsfw_tag > exist_illust.nsfw_tag: exist_illust.nsfw_tag = nsfw_tag exist_illust.tags = repr(tags) exist_illust.updated_at = datetime.now() session.commit() result = DBResult(error=False, info='Exist illust updated', result=0) except NoResultFound: try: new_illust = Pixiv(pid=self.pid, uid=uid, title=title, uname=uname, url=url, nsfw_tag=nsfw_tag, tags=repr(tags), created_at=datetime.now()) session.add(new_illust) session.commit() # 写入tag_pixiv关联表 # 获取本作品在illust表中的id _illust_id_res = self.id() if not _illust_id_res.success(): raise Exception('illust not find or add failed') _illust_id = _illust_id_res.result # 根据作品tag依次写入tag_illust表 for tag in tags: _tag = DBPixivtag(tagname=tag) _tag_id_res = _tag.id() if not _tag_id_res.success(): continue _tag_id = _tag_id_res.result try: new_tag_illust = PixivT2I(illust_id=_illust_id, tag_id=_tag_id, created_at=datetime.now()) session.add(new_tag_illust) session.commit() except Exception as e: session.rollback() try: # 避免以后查询不到,写入失败就将illust信息一并删除 _exist_illust = session.query(Pixiv).filter(Pixiv.pid == self.pid).one() session.delete(_exist_illust) session.commit() raise e except Exception as e: # 这里还出错就没救了x session.rollback() raise e 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