current_principal = fastapi.Depends(auth.get_current_principal)) -> uploads.Upload:
# Create a new upload
try:
- upload = await backend.uploads.create(
- filename = request.filename,
- size = request.size,
- owner = current_principal,
- digest_blake2b512 = request.digest_blake2b512,
- )
+ async with backend.db:
+ upload = await backend.uploads.create(
+ filename = request.filename,
+ size = request.size,
+ owner = current_principal,
+ digest_blake2b512 = request.digest_blake2b512,
+ )
# Send 422 Unprocessable Entity if quota has been exceeded
except users.QuotaExceededError as e:
except ValueError as e:
raise fastapi.HTTPException(400)
- # XXX This needs to go and we need to create a proper database session
- await backend.db.commit()
-
return upload
@router.get("")
# Stream the payload
try:
- async with upload.stream() as f:
- async for chunk in request.stream():
- await f.write(chunk)
+ async with backend.db:
+ async with upload.stream() as f:
+ async for chunk in request.stream():
+ await f.write(chunk)
# Raise an error if we could not import the file
except ValueError as e:
@router.delete("/{id}")
async def delete(upload: uploads.Upload = fastapi.Depends(get_upload)):
# Delete the upload
- await upload.delete()
+ async with backend.db():
+ await upload.delete()
# Send 204
return fastapi.Response(status_code=204)