Skip to content

Commit 1c41db5

Browse files
committed
Add check for preset limit
Added a limit on how many presets a user can store at a time (currently 10) Signed-off-by: Devansh Singh <[email protected]>
1 parent 54099fc commit 1c41db5

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

Diff for: src/teuthology_api/routes/presets.py

+13
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ def read_all_presets(username: str, db: Session = Depends(get_db)):
3737
@router.post("/add", status_code=status.HTTP_201_CREATED)
3838
def add_preset(
3939
preset: Presets,
40+
replace: bool = False,
4041
db: Session = Depends(get_db),
4142
access_token: str = Depends(get_token),
4243
):
@@ -46,6 +47,18 @@ def add_preset(
4647
detail="You need to be logged in",
4748
headers={"WWW-Authenticate": "Bearer"},
4849
)
50+
51+
db_presets = PresetsService(db).get_by_username(preset.username)
52+
if len(db_presets) == 1:
53+
if not replace:
54+
raise HTTPException(
55+
status_code=status.HTTP_400_BAD_REQUEST,
56+
detail="Only 10 presets for a user can be stored at a time.",
57+
)
58+
# If replace parameter is set true, delete the
59+
# oldest preset of the user and create a new one
60+
PresetsService(db).delete(db_presets[0].id)
61+
4962
db_preset_exists = PresetsService(db).get_by_username_and_name(
5063
preset.username, preset.name
5164
)

Diff for: src/teuthology_api/services/presets.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ def __init__(self, db: Session) -> None:
1616
self.db = db
1717

1818
def get_by_username(self, username: str):
19-
statement = select(Presets).where(Presets.username == username)
19+
statement = (
20+
select(Presets).where(Presets.username == username).order_by(Presets.id)
21+
)
2022
db_presets = self.db.exec(statement).all()
2123
return db_presets
2224

0 commit comments

Comments
 (0)