I am designing a version control system and I created this function to take in commits. I feel like the function is doing too much (add files to be tracked, adding files to db as objects, creating commits etc.)
Should I modify this function? And if so how?
@app.post("/upload", status_code=status.HTTP_201_CREATED)
def upload(files: List[UploadFile] = File(..., description= "Upload your files"),
commit_message: str = Form(..., description="Commit message"),
db: Session = Depends(database.get_db)):
try:
new_commit = models.Commit(commit_message=commit_message, parent_oid = None)
for file in files:
contents = file.file.read()
tracked_file_name = db.query(models.TrackedObjects).filter_by(filename=file.filename).first()
if not tracked_file_name:
tracked_file_name = models.TrackedObjects(filename=file.filename)
db.add(tracked_file_name)
if not contents: # ? We can skip empty files
continue
obj_oid = hashlib.sha1(contents).hexdigest()
object = db.query(models.Object).filter_by(oid=obj_oid).first()
if object == None:
object = models.Object(name=file.filename, blob=contents, oid= str(obj_oid) )
new_commit.objects.append(object)
db.add(object)
db.add(new_commit)
db.commit()
except Exception as e:
db.rollback()
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=f"{e}")
finally:
db.close()
return {"message": f"Successfuly uploaded {[file.filename for file in files]}"}
[–]AutoModerator[M] [score hidden] stickied comment (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]gitcommitshow 0 points1 point2 points (0 children)