from datetime import datetime from service.utils.aws_connectors import run_query def make_iso_date_now(): return f'{datetime.utcnow().isoformat(timespec="microseconds")}Z' def exclude_keys(d: dict, *keys): return {k: v for k, v in d.items() if k not in keys} def only_keys(d: dict, *keys): return {k: v for k, v in d.items() if k in keys} def update_caw_meta(caw_schema, **req): sql_params = {} for p in ["name", "description", "updated"]: if p in req and req[p] is not None: sql_params[p] = req[p] if "updated" not in sql_params: sql_params["updated"] = make_iso_date_now() if sql_params: run_query( f"""INSERT INTO {caw_schema}.meta_data (key, val) VALUES """ f"""{','.join([f"('{q}', %({q})s)" for q in sql_params])} """ f"""ON CONFLICT (key) DO UPDATE SET val = EXCLUDED.val;""", sql_params, )