feat: add searchByAddress route

This commit is contained in:
2025-10-13 12:00:40 +05:30
parent 183cf2dde9
commit 369adfaaa6
4 changed files with 45 additions and 1 deletions

View File

@@ -6,6 +6,7 @@ import {
getPermit, getPermit,
listPermits, listPermits,
searchPermit, searchPermit,
searchPermitByAddress,
updatePermit, updatePermit,
} from "./permit.service"; } from "./permit.service";
import { PageQueryParams } from "../pagination"; import { PageQueryParams } from "../pagination";
@@ -102,3 +103,17 @@ export async function searchPermitHandler(
return err; return err;
} }
} }
export async function searchPermitByAddressHandler(
req: FastifyRequest,
res: FastifyReply
) {
const { address } = req.body as { address: string };
try {
const permitList = await searchPermitByAddress(address);
return res.code(200).send(permitList);
} catch (err) {
return err;
}
}

View File

@@ -4,6 +4,7 @@ import {
deletePermitHandler, deletePermitHandler,
getPermitHandler, getPermitHandler,
listPermitsHandler, listPermitsHandler,
searchPermitByAddressHandler,
searchPermitHandler, searchPermitHandler,
updatePermitHandler, updatePermitHandler,
} from "./permit.controller"; } from "./permit.controller";
@@ -97,6 +98,22 @@ export async function permitRoutes(fastify: FastifyInstance) {
searchPermitHandler searchPermitHandler
); );
fastify.post(
"/searchByAddress",
{
schema: {
body: {
type: "object",
properties: { address: { type: "string" } },
},
},
config: { requiredClaims: ["permit:read"] },
preHandler: [fastify.authorize],
},
searchPermitByAddressHandler
);
fastify.get( fastify.get(
"/fields/:field", "/fields/:field",
{ {

View File

@@ -439,3 +439,9 @@ export async function searchPermit(
}, },
}; };
} }
export async function searchPermitByAddress(address: string) {
return await permitModel
.find({ $text: { $search: address } }, { score: { $meta: "textScore" } })
.sort({ score: { $meta: "textScore" } });
}

View File

@@ -167,7 +167,13 @@ export const rules: Record<
}, },
}, },
bot: { bot: {
claims: ["file:download", "note:write", "rts:read", "rts:write"], claims: [
"file:download",
"file:upload",
"note:write",
"rts:read",
"rts:write",
],
hiddenFields: { hiddenFields: {
orgs: ["__v"], orgs: ["__v"],
permits: ["__v"], permits: ["__v"],