preview.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.previewRouter = previewRouter;
  4. exports.onThemeSaved = onThemeSaved;
  5. const express_1 = require("express");
  6. const previewService_1 = require("../services/previewService");
  7. function previewRouter(db, storageDir) {
  8. const router = (0, express_1.Router)();
  9. // POST /api/v1/creatives/:id/preview/start
  10. router.post("/creatives/:id/preview/start", async (req, res) => {
  11. try {
  12. const creativeId = req.params.id;
  13. const creative = db
  14. .prepare("SELECT * FROM creatives WHERE id = ?")
  15. .get(creativeId);
  16. if (!creative) {
  17. res.status(404).json({ error: { message: "Creative not found" } });
  18. return;
  19. }
  20. if (creative.status === "draft") {
  21. res.status(400).json({
  22. error: { message: "请先上传素材后再预览" },
  23. });
  24. return;
  25. }
  26. const theme = req.body?.theme || JSON.parse(creative.theme || "{}");
  27. const result = await (0, previewService_1.startPreview)(creativeId, theme, storageDir);
  28. res.json({ data: result });
  29. }
  30. catch (err) {
  31. res.status(500).json({ error: { message: err.message } });
  32. }
  33. });
  34. // POST /api/v1/creatives/:id/preview/stop
  35. router.post("/creatives/:id/preview/stop", (_req, res) => {
  36. (0, previewService_1.stopPreview)();
  37. res.json({ data: { stopped: true } });
  38. });
  39. return router;
  40. }
  41. /**
  42. * 当 Theme 保存时,若预览正在运行则更新配置
  43. */
  44. function onThemeSaved(creativeId, theme, storageDir) {
  45. (0, previewService_1.updatePreviewConfig)(creativeId, theme, storageDir);
  46. }
  47. //# sourceMappingURL=preview.js.map