This repository has been archived on 2026-03-21. You can view files and clone it, but cannot push or open issues or pull requests.
payfrit-biz/api/grants/searchBusiness.cfm
John 16a3b7c9a3 Replace queryExecute with queryTimed across all endpoints for perf tracking
Converts 200+ endpoint files to use queryTimed() wrapper which tracks
DB query count and execution time. Restores perf dashboard files that
were accidentally moved to _scripts/. Includes portal UI updates.
2026-02-02 00:28:37 -08:00

57 lines
1.5 KiB
Text

<cfsetting showdebugoutput="false">
<cfsetting enablecfoutputonly="true">
<cfcontent type="application/json; charset=utf-8" reset="true">
<cfheader name="Cache-Control" value="no-store">
<cfscript>
data = {};
try {
raw = toString(getHttpRequestData().content);
if (len(trim(raw))) {
data = deserializeJSON(raw);
if (!isStruct(data)) data = {};
}
} catch (any e) { data = {}; }
query = trim(data.Query ?: "");
excludeBusinessID = val(data.ExcludeBusinessID ?: 0);
if (len(query) < 2) {
apiAbort({ "OK": false, "ERROR": "query_too_short", "MESSAGE": "Search query must be at least 2 characters." });
}
// Search by name or ID
params = {};
sql = "SELECT ID, Name FROM Businesses WHERE 1=1";
if (isNumeric(query)) {
sql &= " AND ID = :bizId";
params.bizId = { value = int(query), cfsqltype = "cf_sql_integer" };
} else {
sql &= " AND Name LIKE :namePattern";
params.namePattern = { value = "%" & query & "%", cfsqltype = "cf_sql_varchar" };
}
if (excludeBusinessID GT 0) {
sql &= " AND ID != :excludeId";
params.excludeId = { value = excludeBusinessID, cfsqltype = "cf_sql_integer" };
}
sql &= " ORDER BY Name LIMIT 20";
qResults = queryTimed(sql, params, { datasource = "payfrit" });
businesses = [];
for (row in qResults) {
arrayAppend(businesses, {
"BusinessID": row.ID,
"Name": row.Name
});
}
writeOutput(serializeJSON({
"OK": true,
"Count": arrayLen(businesses),
"Businesses": businesses
}));
</cfscript>