from PDAPI import * import TempLateAPI.GERP.API.FormAPI.FormData as FormData from Utils.Models import GERPRole def fuzzy_search_roles(keyword, limit=5): if not keyword or len(keyword.strip()) < 1: return [] pattern = f"%{keyword.strip()}%" roles = GERPRole.query.filter( GERPRole.RoleName.like(pattern) ).limit(limit).all() results = [] for role in roles: results.append({ "RoleUUID": FormData.GetTable("Role").KeyToUUIDConversion("RoleUUID", role.RoleUUID, str), "RoleName": role.RoleName, "RoleType": role.RoleType, "RoleStatus": role.RoleStatus, "MatchedBy": "name", }) 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", 5)), 1), 20) results = fuzzy_search_roles(keyword, limit) return { "code": 0, "data": results, "total": len(results) }, 200