@@ -18,14 +18,14 @@ def create_category(category_inp: CategoryCreate):
1818 return category
1919
2020
21- @category .get ("/" , response_model = list [CategoryGet ])
21+ @category .get ("/" , response_model = list [CategoryGet ], response_model_exclude_none = True )
2222def get_categories (offset : int = 0 , limit : int = 100 ):
2323 if (offset < 0 ) or (limit < 0 ):
2424 raise HTTPException (400 , detail = "Offset or limit cant be negative" )
2525 return [{"id" : category .id , "order" : category .order , "name" : category .name , "type" : category .type } for category in db .session .query (Category ).order_by (Category .order ).offset (offset ).limit (limit ).all ()]
2626
2727
28- @category .get ("/{category_id}" , response_model = CategoryGet )
28+ @category .get ("/{category_id}" , response_model = CategoryGet , response_model_exclude_none = True )
2929def get_category (category_id : int ):
3030 category = db .session .query (Category ).filter (Category .id == category_id ).one_or_none ()
3131 if not category :
@@ -40,46 +40,48 @@ def get_category(category_id: int):
4040@category .delete ("/{category_id}" , response_model = None )
4141def remove_category (category_id : int ):
4242 category = db .session .query (Category ).filter (Category .id == category_id ).one_or_none ()
43- if category is None :
43+ if not category :
4444 raise HTTPException (status_code = 404 , detail = "Category does not exist" )
45- delete = db .session .query (Category ).filter (Category .id == category_id ).one_or_none ()
4645 for button in db .session .query (Button ).filter (Button .category_id == category_id ).all ():
4746 db .session .delete (button )
4847 db .session .flush ()
4948 db .session .query (Category ) \
5049 .filter (Category .order > category .order ) \
5150 .update ({"order" : Category .order - 1 })
52- db .session .delete (delete )
51+ db .session .delete (category )
5352 db .session .commit ()
5453
5554
5655@category .patch ("/{category_id}" , response_model = CategoryUpdate )
5756def update_category (category_inp : CategoryUpdate , category_id : int ):
58- category = db .session .query (Category ).filter (Category .id == category_id )
57+ category = db .session .query (Category ).filter (Category .id == category_id ). one_or_none ()
5958 last_category = db .session .query (Category ).order_by (Category .order .desc ()).first ()
60- if not category .one_or_none ():
59+
60+ if not category :
6161 raise HTTPException (status_code = 404 , detail = "Category does not exist" )
6262 if not any (category_inp .dict ().values ()):
6363 raise HTTPException (status_code = 400 , detail = "Empty schema" )
64- if category_inp .order < 1 :
65- raise HTTPException (status_code = 400 ,
66- detail = "Order can`t be less than 1" )
67- if last_category and (category_inp .order > last_category .order ):
68- raise HTTPException (status_code = 400 , detail = f"Can`t create category with order { category_inp .order } . "
69- f"Last category is { last_category .order } " )
70-
71- if category .one ().order > category_inp .order :
72- db .session .query (Category ) \
73- .filter (Category .order < category .one ().order ) \
74- .update ({"order" : Category .order + 1 })
75- elif category .one ().order < category_inp .order :
76- db .session .query (Category ) \
77- .filter (Category .order > category .one ().order ) \
78- .update ({"order" : Category .order - 1 })
79-
80- category .update (
64+
65+ if category_inp .order :
66+ if category_inp .order < 1 :
67+ raise HTTPException (status_code = 400 ,
68+ detail = "Order can`t be less than 1" )
69+ if last_category and (category_inp .order > last_category .order ):
70+ raise HTTPException (status_code = 400 , detail = f"Can`t create category with order { category_inp .order } . "
71+ f"Last category is { last_category .order } " )
72+
73+ if category .order > category_inp .order :
74+ db .session .query (Category ) \
75+ .filter (Category .order < category .order ) \
76+ .update ({"order" : Category .order + 1 })
77+ elif category .order < category_inp .order :
78+ db .session .query (Category ) \
79+ .filter (Category .order > category .order ) \
80+ .update ({"order" : Category .order - 1 })
81+
82+ query = db .session .query (Category ).filter (Category .id == category_id )
83+ query .update (
8184 category_inp .dict (exclude_unset = True , exclude_none = True )
8285 )
83- ret = category .one ()
8486 db .session .commit ()
85- return ret
87+ return category
0 commit comments