migrations.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. export const replaceImageUrl = async ({ store }) => {
  2. console.log("Migrate images...");
  3. (await store.list("game")).forEach((game) => {
  4. if (!Array.isArray(game.board.migrations)) {
  5. game.board.migrations = [];
  6. }
  7. const migrations = new Set(game.board.migrations);
  8. const from = "public.jeremiez.net/airboardgame/";
  9. const to = "public.jeremiez.net/ricochet/";
  10. if (migrations.has("migrate_image_url")) {
  11. return;
  12. }
  13. game.items = game.items.map((item) => {
  14. if (item.type === "image") {
  15. const newItem = { ...item };
  16. if (newItem.content && newItem.content.includes(from)) {
  17. newItem.content = newItem.content.replace(from, to);
  18. }
  19. if (
  20. newItem.overlay &&
  21. newItem.overlay.content &&
  22. newItem.overlay.content.includes(from)
  23. ) {
  24. newItem.overlay = newItem.overlay.replace(from, to);
  25. }
  26. if (newItem.backContent && newItem.backContent.includes(from)) {
  27. newItem.backContent = newItem.backContent.replace(from, to);
  28. }
  29. return newItem;
  30. } else {
  31. return item;
  32. }
  33. });
  34. if (game.board.imageUrl && game.board.imageUrl.includes(from)) {
  35. game.board.imageUrl = game.board.imageUrl.replace(from, to);
  36. }
  37. migrations.add("migrate_image_url");
  38. game.board.migrations = Array.from(migrations);
  39. store.update("game", game._id, game);
  40. });
  41. };