Files
SMANAGE/_api_backup/TempLateAPI/GERP/API/FormAPI/MenuSearch.api
T
2026-06-16 11:55:14 +08:00

50 lines
1.2 KiB
Plaintext

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