Update API now uses sqlite db, removed json
This commit is contained in:
parent
0d5b83e054
commit
24300ca596
23
main.py
23
main.py
@ -120,32 +120,19 @@ async def update_secret(secret: Secret, current_user: dict = Depends(get_current
|
|||||||
Updates an encrypted secret for the user.
|
Updates an encrypted secret for the user.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
data = []
|
|
||||||
with open('database/secrets.json', 'r') as f:
|
|
||||||
text = f.read()
|
|
||||||
if text:
|
|
||||||
data.extend(json.loads(text))
|
|
||||||
|
|
||||||
if secret.id is None:
|
if secret.id is None:
|
||||||
raise HTTPException(status.HTTP_400_BAD_REQUEST, detail="Id must be passed for updating secret")
|
raise HTTPException(status.HTTP_400_BAD_REQUEST, detail="Id must be passed for updating secret")
|
||||||
|
|
||||||
secret.user_id = current_user['id']
|
secret.user_id = current_user['id']
|
||||||
|
|
||||||
found_secrets = [(i, j) for i, j in enumerate(data) if j['user_id'] == secret.user_id and j['id']==secret.id]
|
|
||||||
if not found_secrets:
|
|
||||||
raise HTTPException(status.HTTP_400_BAD_REQUEST, deatil="Secret with this Id not found for this user")
|
|
||||||
|
|
||||||
secret_pos = found_secrets[0][0]
|
|
||||||
|
|
||||||
encryption_key = current_user['encryption_key'].encode()
|
encryption_key = current_user['encryption_key'].encode()
|
||||||
encrypted_data = fernet_encrypt(secret.data.encode(), encryption_key)
|
encrypted_data = fernet_encrypt(secret.data.encode(), encryption_key)
|
||||||
|
|
||||||
secret.data = encrypted_data.decode('utf-8')
|
secret.data = encrypted_data.decode('utf-8')
|
||||||
data[secret_pos] = jsonable_encoder(secret)
|
|
||||||
|
|
||||||
with open('database/secrets.json', 'w') as f:
|
token = queries.UPDATE_SECRET(secret.model_dump())
|
||||||
json.dump(data, f)
|
if not token:
|
||||||
return secret
|
raise HTTPException(status.HTTP_400_BAD_REQUEST, "Token not found for this user")
|
||||||
|
return token
|
||||||
|
|
||||||
|
|
||||||
@app.get('/secret')
|
@app.get('/secret')
|
||||||
@ -154,6 +141,8 @@ async def list_secret(current_user: dict = Depends(get_current_user)):
|
|||||||
|
|
||||||
user_secrets = queries.GET_SECRETS({'user_id': current_user['id']})
|
user_secrets = queries.GET_SECRETS({'user_id': current_user['id']})
|
||||||
encryption_key = current_user['encryption_key'].encode()
|
encryption_key = current_user['encryption_key'].encode()
|
||||||
|
if not user_secrets:
|
||||||
|
return {'message': 'No tokens stored yet'}
|
||||||
|
|
||||||
for secret in user_secrets:
|
for secret in user_secrets:
|
||||||
cur_data = secret['data']
|
cur_data = secret['data']
|
||||||
|
15
queries.py
15
queries.py
@ -128,6 +128,21 @@ CREATE_SECRET = DbQuery(
|
|||||||
rows=None
|
rows=None
|
||||||
)
|
)
|
||||||
|
|
||||||
|
UPDATE_SECRET = DbQuery(
|
||||||
|
"""
|
||||||
|
UPDATE secrets
|
||||||
|
SET
|
||||||
|
data = :data,
|
||||||
|
modified_on = CURRENT_TIMESTAMP
|
||||||
|
WHERE
|
||||||
|
id = :id
|
||||||
|
RETURNING *
|
||||||
|
""",
|
||||||
|
type='write',
|
||||||
|
returns=True,
|
||||||
|
rows='single'
|
||||||
|
)
|
||||||
|
|
||||||
GET_SECRETS = DbQuery(
|
GET_SECRETS = DbQuery(
|
||||||
"""
|
"""
|
||||||
SELECT *
|
SELECT *
|
||||||
|
Loading…
Reference in New Issue
Block a user