mirror of
				https://github.com/mealie-recipes/mealie.git
				synced 2025-10-31 10:13:32 -04:00 
			
		
		
		
	
		
			
	
	
		
			54 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			54 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | import json | ||
|  | from typing import Any | ||
|  | 
 | ||
|  | from _gen_utils import render_python_template | ||
|  | from _open_api_parser import OpenAPIParser | ||
|  | from _static import CodeDest, CodeTemplates | ||
|  | from rich.console import Console | ||
|  | 
 | ||
|  | from mealie.app import app | ||
|  | 
 | ||
|  | """
 | ||
|  | This code is used for generating route objects for each route in the OpenAPI Specification. | ||
|  | Currently, they are NOT automatically injected into the test suite. As such, you'll need to copy | ||
|  | the relavent contents of the generated file into the test suite where applicable. I am slowly | ||
|  | migrating the test suite to use this new generated file and this process will be "automated" in the | ||
|  | future. | ||
|  | """
 | ||
|  | 
 | ||
|  | console = Console() | ||
|  | 
 | ||
|  | 
 | ||
|  | def write_dict_to_file(file_name: str, data: dict[str, Any]): | ||
|  |     with open(file_name, "w") as f: | ||
|  |         f.write(json.dumps(data, indent=4)) | ||
|  | 
 | ||
|  | 
 | ||
|  | def main(): | ||
|  |     print("Starting...") | ||
|  |     open_api = OpenAPIParser(app) | ||
|  |     modules = open_api.get_by_module() | ||
|  | 
 | ||
|  |     mods = [] | ||
|  | 
 | ||
|  |     for mod, value in modules.items(): | ||
|  | 
 | ||
|  |         routes = [] | ||
|  |         existings = set() | ||
|  |         # Reduce routes by unique py_route attribute | ||
|  |         for route in value: | ||
|  |             if route.py_route not in existings: | ||
|  |                 existings.add(route.py_route) | ||
|  |                 routes.append(route) | ||
|  | 
 | ||
|  |         module = {"name": mod, "routes": routes} | ||
|  |         mods.append(module) | ||
|  | 
 | ||
|  |     render_python_template(CodeTemplates.pytest_routes, CodeDest.pytest_routes, {"mods": mods}) | ||
|  | 
 | ||
|  |     print("Finished...") | ||
|  | 
 | ||
|  | 
 | ||
|  | if __name__ == "__main__": | ||
|  |     main() |