import session
from __init__ import predict,train,evaluate

class Couplet(session.ORMsession):

    def __init__(self):
        session.ORMsession.__init__(self)

    def send_up(self,up:str):
        return 'asda'

    def to_train(self,up:str,down:str):
        try:
            couplet=train(up=up,down=down)
            self.db_session.add(couplet)
            self.db_session.commit()
        except BaseException as e:
            return 530, "{}".format(str(e))
        return 200

    def to_predict(self,up:str,down:str):
        try:
            couplet = predict(up=up,down=down)
            self.db_session.add(couplet)
            self.db_session.commit()
        except BaseException as e:
            return 530, "{}".format(str(e))
        return 200

    def to_evaluation(self,up:str,down:str):
        try:
            couplet = evaluate(up=up, down=down,popular=0)
            self.db_session.add(couplet)
            self.db_session.commit()
            self.db_session.rollback()
        except BaseException as e:
            return 530, "{}".format(str(e))
        return 200

    def add_popular(self,up:str,down:str,popular:int):
        try:
            self.db_session.query(evaluate).filter(evaluate.up==up,evaluate.down==down).update({'evaluate.popular':evaluate.popular+popular})
            self.db_session.commit()
        except BaseException as e:
            return 530, "{}".format(str(e))
        return 200

    def minus_popular(self,up:str,down:str,popular:int):
        try:
            couplet = evaluate()
            self.db_session.query(evaluate).filter(evaluate.up == up, evaluate.down == down).update(
                {'evaluate.popular': evaluate.popular - popular})
            self.db_session.commit()
        except BaseException as e:
            return 530, "{}".format(str(e))
        return 200

    def change_eva(self):
        try:
            self.db_session.query(evaluate).filter(evaluate.popular<=-10).delete()
            row=self.db_session.query(evaluate).filter(evaluate.popular>=0).all()
            up=[]
            down=[]
            for i in row:
                up.append(i.up)
                down.append()
            self.db_session.query(evaluate).filter(evaluate.popular >=10).delete()
            self.db_session.commit()
            for i in range(0,len(up)):
                couplet=train(up=up[i],down=down[i])
                self.db_session.add(couplet)
        except BaseException as e:
            return 530, "{}".format(str(e))