from py_jftech import read, write, format_date, to_tuple, where, mapper_columns

__COLUMNS__ = {
    'rp_rbd_id': 'rbd_id',
    'rp_date': 'date',
    'rp_predict': 'predict',
    'rp_remark': 'remark',
    'rp_create_time': 'create_time'
}


@write
def insert(datas):
    datas = mapper_columns(datas=datas, columns=__COLUMNS__)
    return f'''
    replace into robo_predict_chu({','.join([x for x in datas.keys()])})
    values ({','.join([f"'{x[1]}'" for x in datas.items()])})
    '''


@read
def get_list(index_ids: object = None, min_date: object = None, max_date: object = None) -> object:
    sqls = []
    if min_date:
        sqls.append(f"rp_date >= '{format_date(min_date)}'")
    if max_date:
        sqls.append(f"rp_date <= '{format_date(max_date)}'")
    return f'''
    select {','.join([f"{x[0]} as {x[1]}" for x in __COLUMNS__.items()])} from robo_predict_chu 
    {where(*sqls, rid_index_id=to_tuple(index_ids))} order by rp_rbd_id, rp_date
    '''