from PDAPI import * import TempLateAPI.GERP.API.FormAPI.FormData as FormData from Utils.Models import GERPMenu def fuzzy_search_menus(keyword, limit=10): if not keyword or len(keyword.strip()) < 1: return [] pattern = f"%{keyword.strip()}%" menus = GERPMenu.query.filter( db.or_( GERPMenu.MenuName.like(pattern), GERPMenu.MenuTitle.like(pattern) ) ).limit(limit).all() results = [] for menu in menus: results.append({ "MenuUUID": FormData.GetTable("Menu").KeyToUUIDConversion("MenuUUID", menu.MenuUUID, str), "MenuName": menu.MenuName, "MenuTitle": menu.MenuTitle, "MenuLink": menu.MenuLink or "", }) return results __metadata__ = { "route": "{DEFAULT_ROUTE}", "methods": ["GET"], "blueprint": "GERP", "permission": 1.0, "attributes": [], "limit": "10 per second" } def HandleRequest(_CleanedData): keyword = flask.request.args.get("keyword", "").strip() limit = min(max(int(flask.request.args.get("limit", 10)), 1), 20) results = fuzzy_search_menus(keyword, limit) return { "code": 0, "data": results, "total": len(results) }, 200