from PDAPI import * import TempLateAPI.GERP.API.FormAPI.FormData as FormData from Utils.Models import GERPCompany def fuzzy_search_companies(keyword, limit=5): if not keyword or len(keyword.strip()) < 1: return [] pattern = f"%{keyword.strip()}%" companies = GERPCompany.query.filter( db.or_( GERPCompany.CompanyName.like(pattern), GERPCompany.CompanyShort.like(pattern) ) ).limit(limit).all() results = [] for company in companies: matched_by = "name" if keyword.strip().lower() in (company.CompanyShort or "").lower(): matched_by = "short" results.append({ "CompanyUUID": FormData.GetTable("Company").KeyToUUIDConversion("CompanyUUID", company.CompanyUUID, str), "CompanyName": company.CompanyName, "CompanyShort": company.CompanyShort or "", "CompanyStatus": company.CompanyStatus, "MatchedBy": matched_by, }) 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_companies(keyword, limit) return { "code": 0, "data": results, "total": len(results) }, 200