from framework import read, where, write
from api import PortfoliosRisk

__COLUMNS__ = {
    'rhp_id': 'id',
    'rhp_date': 'date',
    'rhp_risk': 'risk',
    'rhp_rrs_id': 'signal_id',
    'rhp_rebalance': 'rebalance',
    'rhp_portfolios': 'portfolios',
    'rhp_nav': 'nav',
}


@read(one=True)
def get_one(day, risk: PortfoliosRisk):
    return f'''select {','.join([f'{x[0]} as {x[1]}' for x in __COLUMNS__.items()])} from robo_hold_portfolios {where(rhp_date=day, rhp_risk=risk)}'''


def get_count(risk: PortfoliosRisk = None):
    @read(one=True)
    def exec():
        return f'''select count(*) as `count` from robo_hold_portfolios {where(rhp_risk=risk)}'''
    result = exec()
    return result['count']