diff --git a/src/permit/permit.controller.ts b/src/permit/permit.controller.ts index c78e51f..47d7470 100644 --- a/src/permit/permit.controller.ts +++ b/src/permit/permit.controller.ts @@ -6,6 +6,7 @@ import { getPermit, listPermits, searchPermit, + searchPermitByAddress, updatePermit, } from "./permit.service"; import { PageQueryParams } from "../pagination"; @@ -102,3 +103,17 @@ export async function searchPermitHandler( 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; + } +} diff --git a/src/permit/permit.route.ts b/src/permit/permit.route.ts index d8f92dd..f028927 100644 --- a/src/permit/permit.route.ts +++ b/src/permit/permit.route.ts @@ -4,6 +4,7 @@ import { deletePermitHandler, getPermitHandler, listPermitsHandler, + searchPermitByAddressHandler, searchPermitHandler, updatePermitHandler, } from "./permit.controller"; @@ -97,6 +98,22 @@ export async function permitRoutes(fastify: FastifyInstance) { searchPermitHandler ); + fastify.post( + "/searchByAddress", + { + schema: { + body: { + type: "object", + properties: { address: { type: "string" } }, + }, + }, + + config: { requiredClaims: ["permit:read"] }, + preHandler: [fastify.authorize], + }, + searchPermitByAddressHandler + ); + fastify.get( "/fields/:field", { diff --git a/src/permit/permit.service.ts b/src/permit/permit.service.ts index c50ca78..d2edfe8 100644 --- a/src/permit/permit.service.ts +++ b/src/permit/permit.service.ts @@ -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" } }); +} diff --git a/src/utils/roles.ts b/src/utils/roles.ts index 9d782d9..42f1be6 100644 --- a/src/utils/roles.ts +++ b/src/utils/roles.ts @@ -167,7 +167,13 @@ export const rules: Record< }, }, bot: { - claims: ["file:download", "note:write", "rts:read", "rts:write"], + claims: [ + "file:download", + "file:upload", + "note:write", + "rts:read", + "rts:write", + ], hiddenFields: { orgs: ["__v"], permits: ["__v"],