11"""
22Delete projects.
33"""
4-
4+ import re
55from typing import Iterable
66
77from firebase_admin import exceptions
88
99from mapswipe_workers import auth
10- from mapswipe_workers .definitions import logger
10+ from mapswipe_workers .definitions import logger , CustomError
1111
1212
1313def chunks (data : list , size : int = 250 ) -> Iterable [list ]:
@@ -26,8 +26,11 @@ def delete_project(project_ids: list) -> None:
2626 )
2727
2828 fb_db = auth .firebaseDB ()
29-
3029 ref = fb_db .reference (f"v2/results/{ project_id } " )
30+ if not re .match ("/v2/\w+/[a-zA-Z0-9|-|_]+" , ref .path ):
31+ raise CustomError (
32+ "Given argument resulted in invalid Firebase Realtime Database reference."
33+ )
3134 try :
3235 ref .delete ()
3336 except exceptions .InvalidArgumentError :
@@ -39,6 +42,10 @@ def delete_project(project_ids: list) -> None:
3942 ref .delete ()
4043
4144 ref = fb_db .reference (f"v2/tasks/{ project_id } " )
45+ if not re .match ("/v2/\w+/[a-zA-Z0-9|-|_]+" , ref .path ):
46+ raise CustomError (
47+ "Given argument resulted in invalid Firebase Realtime Database reference."
48+ )
4249 try :
4350 ref .delete ()
4451 except exceptions .InvalidArgumentError :
@@ -49,17 +56,27 @@ def delete_project(project_ids: list) -> None:
4956 ref .update ({key : None for key in chunk })
5057 ref .delete ()
5158
52- fb_db .reference (f"v2/groups/{ project_id } " ).delete ()
53- fb_db .reference (f"v2/projects/{ project_id } " ).delete ()
59+ ref = fb_db .reference (f"v2/groups/{ project_id } " )
60+ if not re .match ("/v2/\w+/[a-zA-Z0-9|-|_]+" , ref .path ):
61+ raise CustomError (
62+ "Given argument resulted in invalid Firebase Realtime Database reference."
63+ )
64+ ref .delete ()
65+ ref = fb_db .reference (f"v2/projects/{ project_id } " )
66+ if not re .match ("/v2/\w+/[a-zA-Z0-9|-|_]+" , ref .path ):
67+ raise CustomError (
68+ "Given argument resulted in invalid Firebase Realtime Database reference."
69+ )
70+ ref .delete ()
5471
5572 pg_db = auth .postgresDB ()
56- sql_query = "DELETE FROM results WHERE project_id = {} ;" .format (project_id )
73+ sql_query = "DELETE FROM results WHERE project_id = '{}' ;" .format (project_id )
5774 pg_db .query (sql_query , project_id )
58- sql_query = "DELETE FROM tasks WHERE project_id = {} ;" .format (project_id )
75+ sql_query = "DELETE FROM tasks WHERE project_id = '{}' ;" .format (project_id )
5976 pg_db .query (sql_query , project_id )
60- sql_query = "DELETE FROM groups WHERE project_id = {} ;" .format (project_id )
77+ sql_query = "DELETE FROM groups WHERE project_id = '{}' ;" .format (project_id )
6178 pg_db .query (sql_query , project_id )
62- sql_query = "DELETE FROM projects WHERE project_id = {} ;" .format (project_id )
79+ sql_query = "DELETE FROM projects WHERE project_id = '{}' ;" .format (project_id )
6380 pg_db .query (sql_query , project_id )
6481
6582 return True
0 commit comments