29 lines
		
	
	
		
			744 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			744 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { Handlers } from "$fresh/server.ts";
 | |
| import { json } from "@lib/helpers.ts";
 | |
| import { AccessDeniedError } from "@lib/errors.ts";
 | |
| import { searchResource } from "@lib/search.ts";
 | |
| 
 | |
| export const handler: Handlers = {
 | |
|   async GET(req, ctx) {
 | |
|     const session = ctx.state.session;
 | |
|     if (!session) {
 | |
|       throw new AccessDeniedError();
 | |
|     }
 | |
| 
 | |
|     const url = new URL(req.url);
 | |
| 
 | |
|     const types = url.searchParams.get("types")?.split(",");
 | |
|     const tags = url.searchParams?.get("tags")?.split(",");
 | |
|     const authors = url.searchParams?.get("authors")?.split(",");
 | |
| 
 | |
|     const resources = await searchResource({
 | |
|       q: url.searchParams.get("q") || "",
 | |
|       types,
 | |
|       tags,
 | |
|       authors,
 | |
|     });
 | |
| 
 | |
|     return json(resources);
 | |
|   },
 | |
| };
 |