from py_jftech import read, write, where, format_date __COLUMNS__ = { 'aev_id': 'id', 'aev_date': 'date', 'aev_asset_id': 'asset_id', 'aev_value': 'value', } @write def insert(asset_id, date, value): return f''' insert into asset_ewma_value(aev_date, aev_asset_id, aev_value) values ('{format_date(date)}', {asset_id}, {value}) ''' @write def delete(day=None): if day: return f"delete from asset_ewma_value where aev_date >= '{format_date(day)}'" else: return 'truncate table asset_ewma_value' @read(one=True) def get_last_one(asset_id, max_date=None): sqls = [] if max_date: sqls.append(f"aev_date <= '{format_date(max_date)}'") return f''' select {','.join([f"{x[0]} as {x[1]}" for x in __COLUMNS__.items()])} from asset_ewma_value {where(*sqls, aev_asset_id=asset_id)} order by aev_date desc limit 1 ''' @read def get_list(asset_id, min_date=None, max_date=None): sqls = [] if min_date: sqls.append(f"aev_date >= '{format_date(min_date)}'") if max_date: sqls.append(f"aev_date <= '{format_date(max_date)}'") return f'''select {','.join([f"{x[0]} as {x[1]}" for x in __COLUMNS__.items()])} from asset_ewma_value {where(*sqls, aev_asset_id=asset_id)}''' @read def get_last(asset_id, max_date=None, limit=1): sqls = [] if max_date: sqls.append(f"aev_date <= '{format_date(max_date)}'") return f''' select {','.join([f"{x[0]} as {x[1]}" for x in __COLUMNS__.items()])} from asset_ewma_value {where(*sqls, aev_asset_id=asset_id)} order by aev_date desc limit {limit} '''