templates.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.templatesRouter = templatesRouter;
  4. const express_1 = require("express");
  5. function templatesRouter(db) {
  6. const router = (0, express_1.Router)();
  7. // GET /api/v1/templates — 模板列表
  8. router.get("/", (_req, res) => {
  9. const rows = db
  10. .prepare("SELECT id, name, manifest FROM templates ORDER BY created_at DESC")
  11. .all();
  12. const data = rows.map((row) => {
  13. const manifest = JSON.parse(row.manifest);
  14. return {
  15. id: row.id,
  16. name: row.name,
  17. description: manifest.description,
  18. version: manifest.version,
  19. platforms: manifest.platforms?.available ?? [],
  20. assetCount: {
  21. required: manifest.assets?.required?.length ?? 0,
  22. optional: manifest.assets?.optional?.length ?? 0,
  23. },
  24. };
  25. });
  26. res.json({ data });
  27. });
  28. // GET /api/v1/templates/:id — 单个模板详情
  29. router.get("/:id", (req, res) => {
  30. const row = db
  31. .prepare("SELECT id, name, manifest FROM templates WHERE id = ?")
  32. .get(req.params.id);
  33. if (!row) {
  34. res.status(404).json({ error: { message: "Template not found" } });
  35. return;
  36. }
  37. const manifest = JSON.parse(row.manifest);
  38. res.json({
  39. data: {
  40. id: row.id,
  41. name: row.name,
  42. ...manifest,
  43. },
  44. });
  45. });
  46. return router;
  47. }
  48. //# sourceMappingURL=templates.js.map