fix(proxy/utils.py): jsonify object before db writes

This commit is contained in:
Krrish Dholakia 2023-12-21 13:03:14 +05:30
parent 812f9ca1b3
commit 81078c4004
3 changed files with 11 additions and 8 deletions

View file

@ -1169,7 +1169,6 @@ async def update_key_fn(request: Request, data: UpdateKeyRequest):
raise Exception("Not connected to DB!") raise Exception("Not connected to DB!")
non_default_values = {k: v for k, v in data_json.items() if v is not None} non_default_values = {k: v for k, v in data_json.items() if v is not None}
print(f"non_default_values: {non_default_values}")
response = await prisma_client.update_data(token=key, data={**non_default_values, "token": key}) response = await prisma_client.update_data(token=key, data={**non_default_values, "token": key})
return {"key": key, **non_default_values} return {"key": key, **non_default_values}
# update based on remaining passed in values # update based on remaining passed in values

View file

@ -1,5 +1,5 @@
from typing import Optional, List, Any, Literal from typing import Optional, List, Any, Literal
import os, subprocess, hashlib, importlib, asyncio, copy import os, subprocess, hashlib, importlib, asyncio, copy, json
import litellm, backoff import litellm, backoff
from litellm.proxy._types import UserAPIKeyAuth from litellm.proxy._types import UserAPIKeyAuth
from litellm.caching import DualCache from litellm.caching import DualCache
@ -147,6 +147,14 @@ class PrismaClient:
return hashed_token return hashed_token
def jsonify_object(self, data: dict) -> dict:
db_data = copy.deepcopy(data)
for k, v in db_data.items():
if isinstance(v, dict):
db_data[k] = json.dumps(v)
return db_data
@backoff.on_exception( @backoff.on_exception(
backoff.expo, backoff.expo,
Exception, # base exception to catch for the backoff Exception, # base exception to catch for the backoff
@ -193,7 +201,7 @@ class PrismaClient:
try: try:
token = data["token"] token = data["token"]
hashed_token = self.hash_token(token=token) hashed_token = self.hash_token(token=token)
db_data = copy.deepcopy(data) db_data = self.jsonify_object(data=data)
db_data["token"] = hashed_token db_data["token"] = hashed_token
new_verification_token = await self.db.litellm_verificationtoken.upsert( # type: ignore new_verification_token = await self.db.litellm_verificationtoken.upsert( # type: ignore
@ -228,7 +236,7 @@ class PrismaClient:
if token.startswith("sk-"): if token.startswith("sk-"):
token = self.hash_token(token=token) token = self.hash_token(token=token)
db_data = copy.deepcopy(data) db_data = self.jsonify_object(data=data)
db_data["token"] = token db_data["token"] = token
response = await self.db.litellm_verificationtoken.update( response = await self.db.litellm_verificationtoken.update(
where={ where={

View file

@ -1,4 +0,0 @@
uploading batch of 2 items
successfully uploaded batch of 2 items
uploading batch of 2 items
successfully uploaded batch of 2 items