from py_jftech import read, write, where, format_date, mapper_columns from api import PortfoliosRisk __COLUMNS__ = { 'rwd_id': 'id', 'rwd_date': 'date', 'rwd_risk': 'risk', 'rwd_weight': 'weight', 'rwd_drift': 'drift', } @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_weight_drift {where(rwd_date=day, rwd_risk=risk)}" @read(one=True) def get_last_one(max_date, risk: PortfoliosRisk): return f''' select {','.join([f'{x[0]} as {x[1]}' for x in __COLUMNS__.items()])} from robo_weight_drift {where(f"rwd_date <= '{format_date(max_date)}'", rwd_risk=risk)} order by rwd_date desc limit 1 ''' @write def insert(datas): datas = mapper_columns(datas=datas, columns=__COLUMNS__) return f''' insert into robo_weight_drift({','.join([x for x in datas.keys()])}) values ({','.join([f"'{x[1]}'" for x in datas.items()])}) ''' @write def lock(): return "lock tables robo_weight_drift read" @write def unlock(): return "UNLOCK TABLES"