| 
									
										
										
										
											2022-02-08 14:55:18 -09:00
										 |  |  | from pydantic import UUID4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-13 12:23:42 -09:00
										 |  |  | class RoutesBase: | 
					
						
							| 
									
										
										
										
											2022-02-08 14:55:18 -09:00
										 |  |  |     prefix = "/api" | 
					
						
							|  |  |  |     base = f"{prefix}/" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def __init__(self) -> None: | 
					
						
							|  |  |  |         raise Exception("This class is not meant to be instantiated.") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def item(cls, item_id: int | str | UUID4) -> str: | 
					
						
							|  |  |  |         return f"{cls.base}/{item_id}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-13 12:23:42 -09:00
										 |  |  | class RoutesFoods(RoutesBase): | 
					
						
							| 
									
										
										
										
											2022-02-08 14:55:18 -09:00
										 |  |  |     base = "/api/foods" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-13 12:23:42 -09:00
										 |  |  | class RoutesUnits(RoutesBase): | 
					
						
							| 
									
										
										
										
											2022-02-08 14:55:18 -09:00
										 |  |  |     base = "/api/units" | 
					
						
							| 
									
										
										
										
											2022-02-13 12:23:42 -09:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RoutesOrganizerBase(RoutesBase): | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def slug(cls, slug: str) -> str: | 
					
						
							|  |  |  |         return f"{cls.base}/slug/{slug}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RoutesTools(RoutesOrganizerBase): | 
					
						
							|  |  |  |     base = "/api/organizers/tools" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RoutesTags(RoutesOrganizerBase): | 
					
						
							|  |  |  |     base = "/api/organizers/tags" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RoutesCategory(RoutesOrganizerBase): | 
					
						
							|  |  |  |     base = "/api/organizers/categories" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RoutesRecipe(RoutesBase): | 
					
						
							|  |  |  |     base = "/api/recipes" | 
					
						
							| 
									
										
										
										
											2022-02-13 18:33:25 -09:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RoutesAdminUsers(RoutesBase): | 
					
						
							|  |  |  |     base = "/api/admin/users" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RoutesUsers(RoutesBase): | 
					
						
							|  |  |  |     base = "/api/users" | 
					
						
							|  |  |  |     self = f"{base}/self" |