1620330161000-news-markdown.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import Migration from "../../Migration";
  2. export default class Migration1620330161000 extends Migration {
  3. async up() {
  4. const News = this.getDb().collection("news");
  5. const newsItems = News.find({ documentVersion: 1 }).stream();
  6. for await (const newsItem of newsItems) {
  7. newsItem.markdown = `# ${newsItem.title}\n\n`;
  8. newsItem.markdown += `## ${newsItem.description}\n\n`;
  9. if (newsItem.bugs) {
  10. newsItem.markdown += `**Bugs:**\n\n${newsItem.bugs.join(
  11. ", "
  12. )}\n\n`;
  13. }
  14. if (newsItem.features) {
  15. newsItem.markdown += `**Features:**\n\n${newsItem.features.join(
  16. ", "
  17. )}\n\n`;
  18. }
  19. if (newsItem.improvements) {
  20. newsItem.markdown += `**Improvements:**\n\n${newsItem.improvements.join(
  21. ", "
  22. )}\n\n`;
  23. }
  24. if (newsItem.upcoming) {
  25. newsItem.markdown += `**Upcoming:**\n\n${newsItem.upcoming.join(
  26. ", "
  27. )}\n`;
  28. }
  29. await News.updateOne(
  30. { _id: newsItem._id },
  31. {
  32. $set: {
  33. markdown: newsItem.markdown,
  34. status: "published",
  35. documentVersion: 2
  36. },
  37. $unset: {
  38. description: "",
  39. bugs: "",
  40. features: "",
  41. improvements: "",
  42. upcoming: ""
  43. }
  44. }
  45. );
  46. }
  47. }
  48. async down() {}
  49. }