forked from
rocksky.app/rocksky
A decentralized music tracking and discovery platform built on AT Protocol 馃幍
1import { ctx } from "context";
2import { Hono } from "hono";
3import { requestCounter } from "metrics";
4
5const app = new Hono();
6
7app.get("/", async (c) => {
8 requestCounter.add(1, { method: "GET", route: "/search" });
9 const query = c.req.query("q");
10 const size = +c.req.query("size") || 10;
11 const offset = +c.req.query("offset") || 0;
12
13 if (!query) {
14 return c.json([]);
15 }
16
17 const results = await ctx.client.search.all(query, {
18 tables: [
19 {
20 table: "users",
21 target: ["handle"],
22 },
23 {
24 table: "albums",
25 target: ["title"],
26 },
27 {
28 table: "artists",
29 target: ["name"],
30 },
31 {
32 table: "tracks",
33 target: ["title", "composer", "copyright_message"],
34 },
35 {
36 table: "playlists",
37 target: ["name"],
38 },
39 ],
40 fuzziness: 1,
41 prefix: "phrase",
42 page: {
43 size,
44 offset,
45 },
46 });
47 return c.json(results);
48});
49
50export default app;