from framework import component, autowired
from api import PortfoliosHolder, PortfoliosRisk, RebalanceBuilder
from portfolios.dao import robo_hold_portfolios as rhp
import json


@component(bean_name='next-re')
class NextReblanceHolder(PortfoliosHolder):

    @autowired
    def __init__(self, rebalance: RebalanceBuilder):
        self._rebalance = rebalance

    def get_portfolios_weight(self, day, risk: PortfoliosRisk):
        hold = rhp.get_one(day, risk)
        if hold:
            result = json.loads(hold['portfolios']['weight'])
            return {int(x[0]): x[1] for x in result.items()}
        return None

    def has_hold(self, risk: PortfoliosRisk) -> bool:
        return rhp.get_count(risk=risk) > 0

    def build_hold_portfolio(self, day, risk: PortfoliosRisk):

        pass