import { zValidator } from "@hono/zod-validator";
import { Hono } from "hono";
import { getFilesSchema, ytdlSchema } from "./schema";
import { getFiles } from "./get";
import { download } from "./download";
import { getYtdl, ytdl } from "./ytdl";
import cache from "../../middlewares/cache";
import { getId3Tags, getId3Image } from "./id3Tags";

const cacheFile = cache({ ttl: 86400 });

const route = new Hono()
  .get("/", zValidator("query", getFilesSchema), getFiles)
  .post("/upload")
  .post("/ytdl", zValidator("json", ytdlSchema), ytdl)
  .get("/ytdl/:id", getYtdl)
  .get("/download/*", cacheFile, download)
  .get("/id3-tags/*", cacheFile, getId3Tags)
  .get("/id3-img/*", cacheFile, getId3Image);

export default route;
