ghost 5.130.2 → 6.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/components/tryghost-i18n-6.0.0-alpha.2.tgz +0 -0
  2. package/core/boot.js +0 -2
  3. package/core/built/admin/assets/admin-x-activitypub/admin-x-activitypub.js +1 -1
  4. package/core/built/admin/assets/admin-x-activitypub/{index-B8te98RZ.mjs → index-BZDwG-OG.mjs} +7397 -7385
  5. package/core/built/admin/assets/admin-x-activitypub/{index-C8qwgKWF.mjs → index-DTlSQCGz.mjs} +2 -2
  6. package/core/built/admin/assets/admin-x-settings/{CodeEditorView-CAtv7MlN.mjs → CodeEditorView-CCUvrZhe.mjs} +2 -2
  7. package/core/built/admin/assets/admin-x-settings/admin-x-settings.js +3 -3
  8. package/core/built/admin/assets/admin-x-settings/{index-BVxh86CD.mjs → index-Cubs_8W6.mjs} +8088 -8532
  9. package/core/built/admin/assets/admin-x-settings/{index-DUhmXSBR.mjs → index-D0ejKdD5.mjs} +2 -2
  10. package/core/built/admin/assets/admin-x-settings/{modals-B5dtfzsB.mjs → modals-DSxs9dLy.mjs} +1676 -1614
  11. package/core/built/admin/assets/{chunk.524.1f2faf572078e5b86b09.js → chunk.524.0953dd72ae1efbabe0de.js} +7 -7
  12. package/core/built/admin/assets/{chunk.582.675905fe8f9be138fb19.js → chunk.582.3caa825c2a91efc48f1d.js} +8 -8
  13. package/core/built/admin/assets/{ghost-280b83af263b51bc4d6ce5bd8f536096.js → ghost-db0f84981913aec8a672c57aa22da07a.js} +40 -45
  14. package/core/built/admin/assets/posts/posts.js +6549 -6537
  15. package/core/built/admin/assets/stats/stats.js +8824 -8812
  16. package/core/built/admin/index.html +3 -3
  17. package/core/frontend/helpers/get.js +4 -2
  18. package/core/frontend/helpers/ghost_head.js +71 -77
  19. package/core/frontend/meta/canonical-url.js +1 -7
  20. package/core/frontend/meta/context-object.js +1 -1
  21. package/core/frontend/meta/get-meta.js +1 -4
  22. package/core/frontend/meta/og-image.js +1 -1
  23. package/core/frontend/meta/og-type.js +0 -2
  24. package/core/frontend/meta/schema.js +1 -1
  25. package/core/frontend/meta/twitter-image.js +1 -1
  26. package/core/frontend/meta/url.js +1 -12
  27. package/core/frontend/services/rendering/context.js +0 -8
  28. package/core/frontend/web/middleware/static-theme.js +20 -1
  29. package/core/server/api/endpoints/index.js +0 -4
  30. package/core/server/api/endpoints/session.js +0 -9
  31. package/core/server/api/endpoints/utils/serializers/input/settings.js +0 -2
  32. package/core/server/api/endpoints/utils/serializers/input/utils/settings-filter-type-group-mapper.js +0 -1
  33. package/core/server/api/endpoints/utils/serializers/input/utils/settings-key-group-mapper.js +0 -1
  34. package/core/server/api/endpoints/utils/serializers/input/utils/settings-key-type-mapper.js +0 -1
  35. package/core/server/api/endpoints/utils/serializers/output/all.js +1 -1
  36. package/core/server/api/endpoints/utils/serializers/output/index.js +0 -4
  37. package/core/server/api/endpoints/utils/serializers/output/mappers/snippets.js +1 -5
  38. package/core/server/api/endpoints/utils/serializers/output/members.js +0 -2
  39. package/core/server/api/endpoints/utils/validators/input/index.js +0 -4
  40. package/core/server/data/importer/importers/data/Base.js +1 -3
  41. package/core/server/data/importer/importers/data/SettingsImporter.js +1 -3
  42. package/core/server/data/migrations/utils/index.js +1 -4
  43. package/core/server/data/migrations/utils/permissions.js +14 -6
  44. package/core/server/data/migrations/utils/settings.js +39 -22
  45. package/core/server/data/migrations/versions/4.47/2022-05-03-15-30-final-v4.js +2 -0
  46. package/core/server/data/migrations/versions/4.47/2022-05-04-10-03-no-op.js +6 -0
  47. package/core/server/data/migrations/versions/5.100/2024-11-06-04-45-15-add-activitypub-integration.js +4 -2
  48. package/core/server/data/migrations/versions/5.113/2025-03-07-12-24-00-add-super-editor.js +4 -2
  49. package/core/server/data/migrations/versions/5.3/2022-07-06-07-58-add-ghost-explore-integration-role.js +4 -2
  50. package/core/server/data/migrations/versions/5.3/2022-07-06-09-17-add-ghost-explore-integration.js +4 -2
  51. package/core/server/data/migrations/versions/5.3/2022-07-06-09-26-add-ghost-explore-integration-api-key.js +4 -2
  52. package/core/server/data/migrations/versions/5.40/2023-03-21-18-42-add-self-serve-integration-role.js +4 -2
  53. package/core/server/data/migrations/versions/5.40/2023-03-21-18-52-add-self-serve-integration.js +4 -2
  54. package/core/server/data/migrations/versions/5.40/2023-03-21-19-02-add-self-serve-integration-api-key.js +4 -2
  55. package/core/server/data/migrations/versions/5.63/2023-09-13-13-03-10-add-ghost-core-content-integration.js +4 -2
  56. package/core/server/data/migrations/versions/5.63/2023-09-13-13-34-11-add-ghost-core-content-integration-key.js +4 -2
  57. package/core/server/data/migrations/versions/6.0/2025-06-20-01-41-54-remove-updated-by-column.js +46 -0
  58. package/core/server/data/migrations/versions/6.0/2025-06-20-13-41-55-remove-created-by-column.js +47 -0
  59. package/core/server/data/migrations/versions/6.0/2025-06-23-09-49-25-add-missing-member-uuids.js +22 -0
  60. package/core/server/data/migrations/versions/6.0/2025-06-23-10-03-26-members-nullable-uuid.js +5 -0
  61. package/core/server/data/migrations/versions/6.0/2025-06-24-09-19-42-use-object-id-for-hardcoded-user-id.js +95 -0
  62. package/core/server/data/migrations/versions/6.0/2025-06-25-15-03-29-remove-amp-from-settings.js +6 -0
  63. package/core/server/data/migrations/versions/6.0/2025-06-30-13-59-10-remove-mail-events-table.js +3 -0
  64. package/core/server/data/migrations/versions/6.0/2025-06-30-14-00-00-update-feature-image-alt-length.js +25 -0
  65. package/core/server/data/schema/default-settings/default-settings.json +0 -13
  66. package/core/server/data/schema/fixtures/FixtureManager.js +128 -5
  67. package/core/server/data/schema/fixtures/fixtures.json +4 -6
  68. package/core/server/data/schema/fixtures/index.js +3 -1
  69. package/core/server/data/schema/schema.js +20 -65
  70. package/core/server/data/seeders/DataGenerator.js +11 -2
  71. package/core/server/data/seeders/importers/EmailsImporter.js +1 -3
  72. package/core/server/data/seeders/importers/LabelsImporter.js +1 -3
  73. package/core/server/data/seeders/importers/MembersImporter.js +0 -1
  74. package/core/server/data/seeders/importers/MembersStripeCustomersImporter.js +1 -2
  75. package/core/server/data/seeders/importers/MembersStripeCustomersSubscriptionsImporter.js +0 -1
  76. package/core/server/data/seeders/importers/PostsImporter.js +0 -1
  77. package/core/server/data/seeders/importers/RolesUsersImporter.js +6 -1
  78. package/core/server/data/seeders/importers/TagsImporter.js +1 -2
  79. package/core/server/data/seeders/importers/UsersImporter.js +1 -2
  80. package/core/server/data/tinybird/ARCHITECTURE.md +0 -4
  81. package/core/server/data/tinybird/DOCS.md +0 -4
  82. package/core/server/models/base/bookshelf.js +8 -1
  83. package/core/server/models/base/plugins/events.js +0 -28
  84. package/core/server/models/base/plugins/user-type.js +10 -36
  85. package/core/server/models/post.js +25 -10
  86. package/core/server/models/relations/authors.js +2 -2
  87. package/core/server/models/settings.js +1 -14
  88. package/core/server/models/user.js +33 -6
  89. package/core/server/services/activitypub/ActivityPubService.js +1 -2
  90. package/core/server/services/activitypub/ActivityPubService.ts +1 -2
  91. package/core/server/services/explore-ping/ExplorePingService.js +3 -1
  92. package/core/server/services/link-redirection/README.md +1 -1
  93. package/core/server/services/mentions/MentionSendingService.js +1 -1
  94. package/core/server/services/settings/SettingsBREADService.js +5 -1
  95. package/core/server/services/settings/settings-service.js +3 -1
  96. package/core/server/services/settings-helpers/SettingsHelpers.js +0 -12
  97. package/core/server/services/update-check/UpdateCheckService.js +18 -2
  98. package/core/server/services/url/config.js +0 -2
  99. package/core/server/web/api/app.js +4 -0
  100. package/core/server/web/api/endpoints/admin/middleware.js +8 -9
  101. package/core/server/web/api/endpoints/admin/routes.js +0 -2
  102. package/core/server/web/comments/routes.js +3 -0
  103. package/core/server/web/shared/middleware/index.js +4 -0
  104. package/core/server/web/shared/middleware/max-limit-cap.js +27 -0
  105. package/core/server/web/shared/middleware/pretty-urls.js +3 -1
  106. package/core/server/web/shared/middleware/redirect-amp-urls.js +36 -0
  107. package/core/shared/config/defaults.json +2 -0
  108. package/core/shared/config/overrides.json +1 -4
  109. package/core/shared/labs.js +2 -6
  110. package/core/shared/max-limit-cap.js +61 -0
  111. package/package.json +5 -6
  112. package/tsconfig.tsbuildinfo +1 -1
  113. package/yarn.lock +18 -107
  114. package/components/tryghost-i18n-5.130.2.tgz +0 -0
  115. package/core/built/admin/assets/img/amp-d7b72aae3315fda95921fb575dfca100.svg +0 -4
  116. package/core/frontend/apps/amp/index.js +0 -30
  117. package/core/frontend/apps/amp/lib/helpers/amp_analytics.js +0 -32
  118. package/core/frontend/apps/amp/lib/helpers/amp_components.js +0 -48
  119. package/core/frontend/apps/amp/lib/helpers/amp_content.js +0 -214
  120. package/core/frontend/apps/amp/lib/helpers/amp_style.js +0 -8
  121. package/core/frontend/apps/amp/lib/router.js +0 -95
  122. package/core/frontend/apps/amp/lib/views/amp.hbs +0 -1046
  123. package/core/frontend/meta/amp-url.js +0 -14
  124. package/core/server/api/endpoints/mail-events.js +0 -17
  125. package/core/server/api/endpoints/utils/serializers/output/mail-events.js +0 -9
  126. package/core/server/api/endpoints/utils/validators/input/mail-events.js +0 -7
  127. package/core/server/data/migrations/utils/constants.js +0 -3
  128. package/core/server/data/migrations/versions/4.0/01-update-mobiledoc.js +0 -61
  129. package/core/server/data/migrations/versions/4.0/02-add-status-column-to-members.js +0 -11
  130. package/core/server/data/migrations/versions/4.0/03-populate-status-column-for-members.js +0 -81
  131. package/core/server/data/migrations/versions/4.0/04-drop-apps-related-tables.js +0 -10
  132. package/core/server/data/migrations/versions/4.0/05-add-members-subscribe-events-table.js +0 -9
  133. package/core/server/data/migrations/versions/4.0/06-populate-members-subscribe-events-table.js +0 -53
  134. package/core/server/data/migrations/versions/4.0/07-alter-unique-constraint-for-posts-slug.js +0 -7
  135. package/core/server/data/migrations/versions/4.0/08-add-members-login-events-table.js +0 -7
  136. package/core/server/data/migrations/versions/4.0/09-add-members-email-change-events-table.js +0 -9
  137. package/core/server/data/migrations/versions/4.0/10-add-members-status-events-table.js +0 -9
  138. package/core/server/data/migrations/versions/4.0/11-add-members-paid-subscription-events-table.js +0 -12
  139. package/core/server/data/migrations/versions/4.0/12-delete-apps-related-settings-keys.js +0 -16
  140. package/core/server/data/migrations/versions/4.0/13-add-members-payment-events-table.js +0 -10
  141. package/core/server/data/migrations/versions/4.0/14-remove-orphaned-stripe-records.js +0 -36
  142. package/core/server/data/migrations/versions/4.0/15-add-frontmatter-column-to-meta.js +0 -7
  143. package/core/server/data/migrations/versions/4.0/16-refactor-slack-setting.js +0 -96
  144. package/core/server/data/migrations/versions/4.0/17-populate-members-status-events-table.js +0 -41
  145. package/core/server/data/migrations/versions/4.0/18-transform-urls-absolute-to-transform-ready.js +0 -201
  146. package/core/server/data/migrations/versions/4.0/19-remove-labs-members-setting.js +0 -10
  147. package/core/server/data/migrations/versions/4.0/20-refactor-unsplash-setting.js +0 -41
  148. package/core/server/data/migrations/versions/4.0/21-sanitize-email-batches-provider-id.js +0 -8
  149. package/core/server/data/migrations/versions/4.0/22-solve-orphaned-webhooks.js +0 -87
  150. package/core/server/data/migrations/versions/4.0/23-regenerate-posts-html.js +0 -66
  151. package/core/server/data/migrations/versions/4.0/24-add-missing-email-permissions.js +0 -36
  152. package/core/server/data/migrations/versions/4.0/25-populate-members-paid-subscription-events-table.js +0 -129
  153. package/core/server/data/migrations/versions/4.0/26-add-cascade-on-delete.js +0 -76
  154. package/core/server/data/migrations/versions/4.0/27-add-primary-key-brute-migrations-lock.js +0 -9
  155. package/core/server/data/migrations/versions/4.0/28-add-webhook-intergrations-foreign-key.js +0 -16
  156. package/core/server/data/migrations/versions/4.0/29-fix-foreign-key-for-members-stripe-customers-subscriptions.js +0 -35
  157. package/core/server/data/migrations/versions/4.0/30-set-default-accent-color.js +0 -21
  158. package/core/server/data/migrations/versions/4.1/01-fix-backup-content-permission-typo.js +0 -15
  159. package/core/server/data/migrations/versions/4.1/02-add-unique-constraint-for-member-stripe-tables.js +0 -21
  160. package/core/server/data/migrations/versions/4.11/01-add-oauth-user-data.js +0 -12
  161. package/core/server/data/migrations/versions/4.11/02-add-email-verification-required-setting.js +0 -43
  162. package/core/server/data/migrations/versions/4.12/01-add-email-only-column-to-posts-meta-table.js +0 -7
  163. package/core/server/data/migrations/versions/4.12/02-fix-member-statuses.js +0 -39
  164. package/core/server/data/migrations/versions/4.13/01-add-members-stripe-connect-auth-permission-to-administrators.js +0 -6
  165. package/core/server/data/migrations/versions/4.13/02-add-members-products-events-table.js +0 -33
  166. package/core/server/data/migrations/versions/4.14/01-fix-comped-member-statuses.js +0 -73
  167. package/core/server/data/migrations/versions/4.14/02-fix-free-members-status-events.js +0 -61
  168. package/core/server/data/migrations/versions/4.15/01-add-temp-members-analytic-events-table.js +0 -12
  169. package/core/server/data/migrations/versions/4.16/01-add-custom-theme-settings-table.js +0 -9
  170. package/core/server/data/migrations/versions/4.17/01-add-custom-theme-settings-permissions.js +0 -21
  171. package/core/server/data/migrations/versions/4.17/02-add-offers-table.js +0 -19
  172. package/core/server/data/migrations/versions/4.17/03-add-offers-permissions.js +0 -35
  173. package/core/server/data/migrations/versions/4.19/01-add-active-column-to-offers.js +0 -7
  174. package/core/server/data/migrations/versions/4.19/02-add-offer-redemptions-table.js +0 -8
  175. package/core/server/data/migrations/versions/4.2/01-fix-incorrect-mrr-delta-events.js +0 -13
  176. package/core/server/data/migrations/versions/4.20/01-remove-offer-redemptions-table.js +0 -19
  177. package/core/server/data/migrations/versions/4.20/02-remove-offers-table.js +0 -30
  178. package/core/server/data/migrations/versions/4.20/03-add-offers-table.js +0 -21
  179. package/core/server/data/migrations/versions/4.20/04-add-offer-redemptions-table.js +0 -9
  180. package/core/server/data/migrations/versions/4.20/05-remove-not-null-constraint-from-portal-title.js +0 -44
  181. package/core/server/data/migrations/versions/4.22/01-add-is-launch-complete-setting.js +0 -8
  182. package/core/server/data/migrations/versions/4.22/02-update-launch-complete-setting-from-user-data.js +0 -39
  183. package/core/server/data/migrations/versions/4.23/01-truncate-offer-names.js +0 -59
  184. package/core/server/data/migrations/versions/4.3/01-add-products-table.js +0 -9
  185. package/core/server/data/migrations/versions/4.3/02-add-members-products-table.js +0 -8
  186. package/core/server/data/migrations/versions/4.3/03-add-default-product.js +0 -39
  187. package/core/server/data/migrations/versions/4.3/04-attach-members-to-product.js +0 -50
  188. package/core/server/data/migrations/versions/4.3/05-add-stripe-products-table.js +0 -9
  189. package/core/server/data/migrations/versions/4.3/06-add-stripe-prices-table.js +0 -15
  190. package/core/server/data/migrations/versions/4.3/07-add-products-permissions.js +0 -29
  191. package/core/server/data/migrations/versions/4.3/08-migrate-members-signup-setting.js +0 -109
  192. package/core/server/data/migrations/versions/4.3/09-add-price-id-column-to-subscriptions-table.js +0 -10
  193. package/core/server/data/migrations/versions/4.3/10-populate-stripe-price-id-in-subscriptions.js +0 -20
  194. package/core/server/data/migrations/versions/4.33/2022-01-14-11-50-add-type-column-to-products.js +0 -12
  195. package/core/server/data/migrations/versions/4.33/2022-01-14-11-51-add-default-free-tier.js +0 -40
  196. package/core/server/data/migrations/versions/4.33/2022-01-18-09-07-remove-duplicate-offer-redemptions.js +0 -46
  197. package/core/server/data/migrations/versions/4.33/2022-01-19-10-43-add-active-column-to-products-table.js +0 -7
  198. package/core/server/data/migrations/versions/4.34/2022-01-25-13-53-add-welcome-page-url-column-to-products.js +0 -7
  199. package/core/server/data/migrations/versions/4.35/2022-01-20-05-55-add-post-products-table.js +0 -8
  200. package/core/server/data/migrations/versions/4.35/2022-01-30-15-17-set-welcome-page-url-from-settings.js +0 -45
  201. package/core/server/data/migrations/versions/4.35/2022-02-01-11-48-update-email-recipient-filter-column-type.js +0 -19
  202. package/core/server/data/migrations/versions/4.35/2022-02-01-12-03-update-recipient-filter-column-type.js +0 -19
  203. package/core/server/data/migrations/versions/4.35/2022-02-02-10-38-add-default-content-visibility-tiers-setting.js +0 -8
  204. package/core/server/data/migrations/versions/4.35/2022-02-02-13-10-transform-specific-tiers-default-content-visibility.js +0 -147
  205. package/core/server/data/migrations/versions/4.35/2022-02-04-04-34-populate-empty-portal-products.js +0 -60
  206. package/core/server/data/migrations/versions/4.36/2022-02-07-14-34-add-last-seen-at-column-to-members.js +0 -10
  207. package/core/server/data/migrations/versions/4.37/2022-02-21-09-53-backfill-members-last-seen-at-column.js +0 -32
  208. package/core/server/data/migrations/versions/4.38/2022-03-01-08-46-add-visibility-to-tiers.js +0 -11
  209. package/core/server/data/migrations/versions/4.38/2022-03-03-16-12-add-visibility-to-tiers.js +0 -8
  210. package/core/server/data/migrations/versions/4.38/2022-03-03-16-17-drop-tiers-visible-column.js +0 -7
  211. package/core/server/data/migrations/versions/4.39/2022-03-07-10-57-update-free-products-visibility-column.js +0 -66
  212. package/core/server/data/migrations/versions/4.39/2022-03-07-10-57-update-products-visibility-column.js +0 -36
  213. package/core/server/data/migrations/versions/4.4/01-restore-free-members-signup-setting-from-backup.js +0 -99
  214. package/core/server/data/migrations/versions/4.4/02-migrate-members-signup-access.js +0 -126
  215. package/core/server/data/migrations/versions/4.40/2022-03-07-14-37-add-members-cancel-events-table.js +0 -8
  216. package/core/server/data/migrations/versions/4.40/2022-03-15-06-40-add-offers-admin-integration-permission-roles.js +0 -23
  217. package/core/server/data/migrations/versions/4.40/2022-03-15-06-40-add-tiers-admin-integration-permission-roles.js +0 -20
  218. package/core/server/data/migrations/versions/4.42/2022-03-21-17-17-add.js +0 -25
  219. package/core/server/data/migrations/versions/4.42/2022-03-30-15-44-add-newsletter-permissions.js +0 -28
  220. package/core/server/data/migrations/versions/4.43/2022-03-28-19-26-recreate-newsletter-table.js +0 -29
  221. package/core/server/data/migrations/versions/4.43/2022-03-29-14-45-add-members-newsletters-table.js +0 -7
  222. package/core/server/data/migrations/versions/4.43/2022-04-01-10-13-add-post-newsletter-relation.js +0 -108
  223. package/core/server/data/migrations/versions/4.43/2022-04-06-09-47-add-type-column-to-paid-subscription-events.js +0 -7
  224. package/core/server/data/migrations/versions/4.43/2022-04-06-14-56-add-email-newsletter-relation.js +0 -8
  225. package/core/server/data/migrations/versions/4.43/2022-04-08-10-45-add-subscription-id-to-mrr-events.js +0 -7
  226. package/core/server/data/migrations/versions/4.44/2022-04-06-15-22-populate-type-column-for-paid-subscription-events.js +0 -21
  227. package/core/server/data/migrations/versions/4.44/2022-04-08-11-54-add-cancelled-events.js +0 -51
  228. package/core/server/data/migrations/versions/4.44/2022-04-11-08-24-add-newsletter-permissions.js +0 -33
  229. package/core/server/data/migrations/versions/4.44/2022-04-11-10-54-add-mrr-to-subscriptions.js +0 -8
  230. package/core/server/data/migrations/versions/4.44/2022-04-12-07-33-fill-mrr.js +0 -29
  231. package/core/server/data/migrations/versions/4.44/2022-04-13-12-00-remove-newsletter-sender-name-not-null-constraint.js +0 -33
  232. package/core/server/data/migrations/versions/4.44/2022-04-15-07-53-add-offer-id-to-subscriptions.js +0 -9
  233. package/core/server/data/migrations/versions/4.45/2022-04-19-12-23-backfill-subscriptions-offers.js +0 -60
  234. package/core/server/data/migrations/versions/4.45/2022-04-20-11-25-add-newsletter-read-permission.js +0 -9
  235. package/core/server/data/migrations/versions/4.45/2022-04-21-02-55-add-notifications-key-entry-to-settings-table.js +0 -8
  236. package/core/server/data/migrations/versions/4.46/2022-04-13-12-00-add-created-at-newsletters.js +0 -6
  237. package/core/server/data/migrations/versions/4.46/2022-04-13-12-01-add-updated-at-newsletters.js +0 -6
  238. package/core/server/data/migrations/versions/4.46/2022-04-13-12-02-fill-created-at-newsletters.js +0 -19
  239. package/core/server/data/migrations/versions/4.46/2022-04-13-12-03-drop-nullable-created-at-newsletters.js +0 -3
  240. package/core/server/data/migrations/versions/4.46/2022-04-13-12-08-newsletters-show-header-name.js +0 -7
  241. package/core/server/data/migrations/versions/4.46/2022-04-13-12-57-add-uuid-column-to-newsletters.js +0 -8
  242. package/core/server/data/migrations/versions/4.46/2022-04-13-12-58-fill-uuid-for-newsletters.js +0 -19
  243. package/core/server/data/migrations/versions/4.46/2022-04-13-12-59-drop-nullable-uuid-newsletters.js +0 -3
  244. package/core/server/data/migrations/versions/4.46/2022-04-13-13-00-add-default-newsletter.js +0 -92
  245. package/core/server/data/migrations/versions/4.46/2022-04-20-08-39-map-subscribers-to-default-newsletter.js +0 -66
  246. package/core/server/data/migrations/versions/4.46/2022-04-22-07-43-add-newsletter-id-to-subscribe-events.js +0 -9
  247. package/core/server/data/migrations/versions/4.46/2022-04-27-07-59-set-newsletter-id-subscribe-events.js +0 -31
  248. package/core/server/data/migrations/versions/4.47/2022-05-03-15-30-update-newsletter-sending-options.js +0 -34
  249. package/core/server/data/migrations/versions/4.47/2022-05-04-10-03-transform-newsletter-header-image.js +0 -26
  250. package/core/server/data/migrations/versions/4.5/01-add-stripe-price-description-column.js +0 -7
  251. package/core/server/data/migrations/versions/4.5/02-add-product-description-column.js +0 -7
  252. package/core/server/data/migrations/versions/4.5/03-give-label-read-permissions-to-editors.js +0 -14
  253. package/core/server/data/migrations/versions/4.5/04-remove-unique-constraint-from-product-name.js +0 -13
  254. package/core/server/data/migrations/versions/4.5/05-rename-default-product-to-site-title.js +0 -38
  255. package/core/server/data/migrations/versions/4.6/01-remove-comped-status.js +0 -47
  256. package/core/server/data/migrations/versions/4.7/01-add-monthly-price-column-to-products.js +0 -7
  257. package/core/server/data/migrations/versions/4.7/02-add-yearly-price-column-to-products.js +0 -7
  258. package/core/server/data/migrations/versions/4.7/03-add-labs-setting.js +0 -42
  259. package/core/server/data/migrations/versions/4.8/01-add-feature-image-alt-column-to-posts-meta.js +0 -7
  260. package/core/server/data/migrations/versions/4.8/02-add-feature-image-caption-column-to-posts-meta.js +0 -7
  261. package/core/server/data/migrations/versions/4.8/03-add-default-product-portal-products.js +0 -69
  262. package/core/server/data/migrations/versions/4.8/04-migrate-show-newsletter-header-setting.js +0 -124
  263. package/core/server/data/migrations/versions/4.9/01-add-reset-all-passwords-permission.js +0 -11
  264. package/core/server/data/migrations/versions/4.9/02-add-benefits-table.js +0 -9
  265. package/core/server/data/migrations/versions/4.9/03-add-products-benefits-table.js +0 -8
  266. package/core/server/data/migrations/versions/4.9/04-add-member-segment-to-email-batches.js +0 -7
  267. package/core/server/data/migrations/versions/4.9/05-fix-missed-mobiledoc-url-transforms.js +0 -87
  268. package/core/server/data/migrations/versions/4.9/06-add-comped-status.js +0 -47
  269. package/core/server/data/migrations/versions/4.9/07-update-comped-members-status-events.js +0 -39
  270. package/core/server/models/mail-event.js +0 -12
  271. package/core/server/services/mail-events/BookshelfMailEventRepository.js +0 -40
  272. package/core/server/services/mail-events/InMemoryMailEventRepository.js +0 -10
  273. package/core/server/services/mail-events/InMemoryMailEventRepository.ts +0 -8
  274. package/core/server/services/mail-events/MailEvent.js +0 -20
  275. package/core/server/services/mail-events/MailEvent.ts +0 -10
  276. package/core/server/services/mail-events/MailEventRepository.js +0 -2
  277. package/core/server/services/mail-events/MailEventRepository.ts +0 -5
  278. package/core/server/services/mail-events/MailEventService.js +0 -124
  279. package/core/server/services/mail-events/MailEventService.ts +0 -169
  280. package/core/server/services/mail-events/index.js +0 -21
  281. package/core/server/services/mail-events/libraries.d.ts +0 -2
@@ -1,25 +0,0 @@
1
- // ESLint Override Notice
2
- // This file was named incorrectly and it didn't flag up in our eslint rules.
3
- // The ESLint match-regex rule has now been updated to catch this, but this file has to be excluded.
4
- /* eslint-disable ghost/filenames/match-regex */
5
-
6
- const {addTable} = require('../../utils');
7
-
8
- module.exports = addTable('newsletters', {
9
- id: {type: 'string', maxlength: 24, nullable: false, primary: true},
10
- name: {type: 'string', maxlength: 191, nullable: false},
11
- description: {type: 'string', maxlength: 2000, nullable: true},
12
- sender_name: {type: 'string', maxlength: 191, nullable: false},
13
- sender_email: {type: 'string', maxlength: 191, nullable: false, validations: {isEmail: true}},
14
- sender_reply_to: {type: 'string', maxlength: 191, nullable: false, validations: {isEmail: true}},
15
- default: {type: 'boolean', nullable: false, defaultTo: false},
16
- status: {type: 'string', maxlength: 50, nullable: false, defaultTo: 'active'},
17
- recipient_filter: {
18
- type: 'text',
19
- maxlength: 1000000000,
20
- nullable: false,
21
- defaultTo: ''
22
- },
23
- subscribe_on_signup: {type: 'boolean', nullable: false, defaultTo: false},
24
- sort_order: {type: 'integer', nullable: false, unsigned: true, defaultTo: 0}
25
- });
@@ -1,28 +0,0 @@
1
- const {
2
- addPermissionWithRoles,
3
- combineTransactionalMigrations
4
- } = require('../../utils');
5
-
6
- module.exports = combineTransactionalMigrations(
7
- addPermissionWithRoles({
8
- name: 'Browse newsletters',
9
- action: 'browse',
10
- object: 'newsletter'
11
- }, [
12
- 'Administrator'
13
- ]),
14
- addPermissionWithRoles({
15
- name: 'Add newsletters',
16
- action: 'add',
17
- object: 'newsletter'
18
- }, [
19
- 'Administrator'
20
- ]),
21
- addPermissionWithRoles({
22
- name: 'Edit newsletters',
23
- action: 'edit',
24
- object: 'newsletter'
25
- }, [
26
- 'Administrator'
27
- ])
28
- );
@@ -1,29 +0,0 @@
1
- const {recreateTable} = require('../../utils');
2
-
3
- module.exports = recreateTable('newsletters', {
4
- id: {type: 'string', maxlength: 24, nullable: false, primary: true},
5
- name: {type: 'string', maxlength: 191, nullable: false, unique: true},
6
- description: {type: 'string', maxlength: 2000, nullable: true},
7
- slug: {type: 'string', maxlength: 191, nullable: false, unique: true},
8
- sender_name: {type: 'string', maxlength: 191, nullable: false},
9
- sender_email: {type: 'string', maxlength: 191, nullable: true},
10
- sender_reply_to: {type: 'string', maxlength: 191, nullable: false, defaultTo: 'newsletter', validations: {isIn: [['newsletter', 'support']]}},
11
- status: {type: 'string', maxlength: 50, nullable: false, defaultTo: 'active', validations: {isIn: [['active', 'archived']]}},
12
- visibility: {
13
- type: 'string',
14
- maxlength: 50,
15
- nullable: false,
16
- defaultTo: 'members'
17
- },
18
- subscribe_on_signup: {type: 'boolean', nullable: false, defaultTo: true},
19
- sort_order: {type: 'integer', nullable: false, unsigned: true, defaultTo: 0},
20
- header_image: {type: 'string', maxlength: 2000, nullable: true},
21
- show_header_icon: {type: 'boolean', nullable: false, defaultTo: true},
22
- show_header_title: {type: 'boolean', nullable: false, defaultTo: true},
23
- title_font_category: {type: 'string', maxlength: 191, nullable: false, defaultTo: 'sans_serif', validations: {isIn: [['serif', 'sans_serif']]}},
24
- title_alignment: {type: 'string', maxlength: 191, nullable: false, defaultTo: 'center', validations: {isIn: [['center', 'left']]}},
25
- show_feature_image: {type: 'boolean', nullable: false, defaultTo: true},
26
- body_font_category: {type: 'string', maxlength: 191, nullable: false, defaultTo: 'sans_serif', validations: {isIn: [['serif', 'sans_serif']]}},
27
- footer_content: {type: 'text', maxlength: 1000000000, nullable: true},
28
- show_badge: {type: 'boolean', nullable: false, defaultTo: true}
29
- });
@@ -1,7 +0,0 @@
1
- const {addTable} = require('../../utils');
2
-
3
- module.exports = addTable('members_newsletters', {
4
- id: {type: 'string', maxlength: 24, nullable: false, primary: true},
5
- member_id: {type: 'string', maxlength: 24, nullable: false, references: 'members.id', cascadeDelete: true},
6
- newsletter_id: {type: 'string', maxlength: 24, nullable: false, references: 'newsletters.id', cascadeDelete: true}
7
- });
@@ -1,108 +0,0 @@
1
- const logging = require('@tryghost/logging');
2
- const DatabaseInfo = require('@tryghost/database-info');
3
- const commands = require('../../../schema/commands');
4
- const {createTransactionalMigration} = require('../../utils');
5
-
6
- const table = 'posts';
7
- const column = 'newsletter_id';
8
- const targetTable = 'newsletters';
9
- const targetColumn = 'id';
10
-
11
- const columnDefinition = {
12
- type: 'string',
13
- maxlength: 24,
14
- nullable: true,
15
- references: `${targetTable}.${targetColumn}`
16
- };
17
-
18
- /**
19
- * This migration is adding a new column `newsletter_id` to the table posts
20
- * that is a foreign key to `newsletters.id`.
21
- *
22
- * It isn't using the existing utils because of a performance issue. In MySQL,
23
- * adding a new row without `algorithm=copy` uses the INPLACE algorithm which
24
- * was too slow on big `posts` tables (~3 minutes for 10k posts). Switching to
25
- * the COPY algorithm fixed the issue (~3 seconds for 10k posts).
26
- */
27
- module.exports = createTransactionalMigration(
28
- async function up(knex) {
29
- const hasColumn = await knex.schema.hasColumn(table, column);
30
-
31
- if (hasColumn) {
32
- logging.info(`Adding ${table}.${column} column - skipping as table is correct`);
33
- return;
34
- }
35
-
36
- logging.info(`Adding ${table}.${column} column`);
37
-
38
- // Use the default flow for SQLite because .toSQL() is tricky with SQLite
39
- if (DatabaseInfo.isSQLite(knex)) {
40
- await commands.addColumn(table, column, knex, columnDefinition);
41
- return;
42
- }
43
-
44
- // Add the column
45
-
46
- let sql = knex.schema.table(table, function (t) {
47
- t.string(column, 24);
48
- }).toSQL()[0].sql;
49
-
50
- if (DatabaseInfo.isMySQL(knex)) {
51
- // Guard against an ending semicolon
52
- sql = sql.replace(/;\s*$/, '') + ', algorithm=copy';
53
- }
54
-
55
- await knex.raw(sql);
56
-
57
- // Add the foreign key constraint
58
-
59
- await commands.addForeign({
60
- fromTable: table,
61
- fromColumn: column,
62
- toTable: targetTable,
63
- toColumn: targetColumn,
64
- cascadeDelete: false,
65
- transaction: knex
66
- });
67
- },
68
- async function down(knex) {
69
- const hasColumn = await knex.schema.hasColumn(table, column);
70
-
71
- if (!hasColumn) {
72
- logging.info(`Removing ${table}.${column} column - skipping as table is correct`);
73
- return;
74
- }
75
-
76
- logging.info(`Removing ${table}.${column} column`);
77
-
78
- // Use the default flow for SQLite because .toSQL() is tricky with SQLite
79
- if (DatabaseInfo.isSQLite(knex)) {
80
- await commands.dropColumn(table, column, knex, columnDefinition);
81
- return;
82
- }
83
-
84
- // Drop the foreign key constraint
85
-
86
- await commands.dropForeign({
87
- fromTable: table,
88
- fromColumn: column,
89
- toTable: targetTable,
90
- toColumn: targetColumn,
91
- transaction: knex
92
- });
93
-
94
- // Drop the column
95
-
96
- let sql = knex.schema.table(table, function (t) {
97
- t.dropColumn(column);
98
- }).toSQL()[0].sql;
99
-
100
- if (DatabaseInfo.isMySQL(knex)) {
101
- // Guard against an ending semicolon
102
- sql = sql.replace(/;\s*$/, '') + ', algorithm=copy';
103
- }
104
-
105
- await knex.raw(sql);
106
- }
107
- );
108
-
@@ -1,7 +0,0 @@
1
- const {createAddColumnMigration} = require('../../utils');
2
-
3
- module.exports = createAddColumnMigration('members_paid_subscription_events', 'type', {
4
- type: 'string',
5
- maxlength: '50',
6
- nullable: true
7
- });
@@ -1,8 +0,0 @@
1
- const {createAddColumnMigration} = require('../../utils');
2
-
3
- module.exports = createAddColumnMigration('emails', 'newsletter_id', {
4
- type: 'string',
5
- maxlength: 24,
6
- nullable: true,
7
- references: 'newsletters.id'
8
- });
@@ -1,7 +0,0 @@
1
- const {createAddColumnMigration} = require('../../utils');
2
-
3
- module.exports = createAddColumnMigration('members_paid_subscription_events', 'subscription_id', {
4
- type: 'string',
5
- maxlength: 24,
6
- nullable: true
7
- });
@@ -1,21 +0,0 @@
1
- const logging = require('@tryghost/logging');
2
-
3
- const {createTransactionalMigration} = require('../../utils');
4
-
5
- module.exports = createTransactionalMigration(
6
- async function up(knex) {
7
- logging.info('Setting "type" to "updated" for events with different to_plan & from_plan');
8
- await knex('members_paid_subscription_events').update('type', 'updated').whereNotNull('from_plan').whereNotNull('to_plan').whereRaw('to_plan != from_plan');
9
-
10
- logging.info('Setting "type" to "expired" for events with null to_plan or the same to_plan & from_plan');
11
- await knex('members_paid_subscription_events').update('type', 'expired').whereNull('to_plan').whereNotNull('from_plan');
12
- await knex('members_paid_subscription_events').update('type', 'expired').whereRaw('from_plan = to_plan');
13
-
14
- logging.info('Setting "type" to "created" for events with null from_plan');
15
- await knex('members_paid_subscription_events').update('type', 'created').whereNull('from_plan').whereNotNull('to_plan');
16
- },
17
- async function down(knex) {
18
- logging.info('Setting "type" to null for all rows in "members_paid_subscriptions events"');
19
- await knex('members_paid_subscription_events').update('type', null);
20
- }
21
- );
@@ -1,51 +0,0 @@
1
- const ObjectID = require('bson-objectid').default;
2
- const logging = require('@tryghost/logging');
3
-
4
- const {createTransactionalMigration} = require('../../utils');
5
-
6
- module.exports = createTransactionalMigration(
7
- async function up(knex) {
8
- const cancelledSubscriptions = await knex
9
- .select(
10
- 'members.id as member_id',
11
- 'members_stripe_customers_subscriptions.id',
12
- 'members_stripe_customers_subscriptions.stripe_price_id',
13
- 'members_stripe_customers_subscriptions.plan_currency',
14
- 'members_stripe_customers_subscriptions.updated_at'
15
- )
16
- .from('members_stripe_customers_subscriptions')
17
- .join('members_stripe_customers', 'members_stripe_customers.customer_id', '=', 'members_stripe_customers_subscriptions.customer_id')
18
- .join('members', 'members_stripe_customers.member_id', '=', 'members.id')
19
- .where('members_stripe_customers_subscriptions.cancel_at_period_end', true)
20
- .whereNot('members_stripe_customers_subscriptions.status', 'canceled');
21
-
22
- if (cancelledSubscriptions.length === 0) {
23
- logging.info('No missing cancelled events - skipping migration');
24
- return;
25
- }
26
-
27
- const eventsToInsert = cancelledSubscriptions.map((subscription) => {
28
- const event = {
29
- id: (new ObjectID()).toHexString(),
30
- type: 'canceled',
31
- member_id: subscription.member_id,
32
- subscription_id: subscription.id,
33
- from_plan: subscription.stripe_price_id,
34
- to_plan: subscription.stripe_price_id,
35
- currency: subscription.plan_currency,
36
- source: 'migration',
37
- mrr_delta: 0,
38
- created_at: subscription.updated_at
39
- };
40
-
41
- return event;
42
- });
43
-
44
- logging.info(`Found ${eventsToInsert.length} missing cancellation events`);
45
- await knex('members_paid_subscription_events').insert(eventsToInsert);
46
- },
47
- async function down(knex) {
48
- logging.info('Deleting all members_paid_subscription_events with a "type" of "cancelled"');
49
- await knex('members_paid_subscription_events').where({type: 'canceled', source: 'migration'}).del();
50
- }
51
- );
@@ -1,33 +0,0 @@
1
- const {
2
- addPermissionWithRoles,
3
- combineTransactionalMigrations
4
- } = require('../../utils');
5
-
6
- /**
7
- * This is similar to core/server/data/migrations/versions/4.42/2022-03-30-15-44-add-newsletter-permissions.js
8
- * as the permissions were not added in the fixture file at the time of the migration.
9
- * This means the new Ghost installs do not have the newsletter permission and we need this migration.
10
- */
11
- module.exports = combineTransactionalMigrations(
12
- addPermissionWithRoles({
13
- name: 'Browse newsletters',
14
- action: 'browse',
15
- object: 'newsletter'
16
- }, [
17
- 'Administrator'
18
- ]),
19
- addPermissionWithRoles({
20
- name: 'Add newsletters',
21
- action: 'add',
22
- object: 'newsletter'
23
- }, [
24
- 'Administrator'
25
- ]),
26
- addPermissionWithRoles({
27
- name: 'Edit newsletters',
28
- action: 'edit',
29
- object: 'newsletter'
30
- }, [
31
- 'Administrator'
32
- ])
33
- );
@@ -1,8 +0,0 @@
1
- const {createAddColumnMigration} = require('../../utils');
2
-
3
- module.exports = createAddColumnMigration('members_stripe_customers_subscriptions', 'mrr', {
4
- type: 'integer',
5
- unsigned: true,
6
- nullable: false,
7
- defaultTo: 0
8
- });
@@ -1,29 +0,0 @@
1
- const logging = require('@tryghost/logging');
2
-
3
- const {createTransactionalMigration} = require('../../utils');
4
-
5
- module.exports = createTransactionalMigration(
6
- async function up(knex) {
7
- logging.info('Setting "mrr" for active subscriptions in "members_stripe_customers_subscriptions"');
8
-
9
- // Note that we also set the MRR for 'canceled' subscriptions (cancel_at_period_end === true)
10
- // A different migration will make that change in 5.0
11
- await knex('members_stripe_customers_subscriptions')
12
- .update('mrr', knex.raw(`
13
- CASE WHEN plan_interval = 'year' THEN
14
- FLOOR(plan_amount / 12)
15
- WHEN plan_interval = 'week' THEN
16
- plan_amount * 4
17
- WHEN plan_interval = 'day' THEN
18
- plan_amount * 30
19
- ELSE
20
- plan_amount
21
- END
22
- `))
23
- .whereNotIn('status', ['trialing', 'incomplete', 'incomplete_expired', 'canceled']);
24
- },
25
- async function down(knex) {
26
- logging.info('Setting "mrr" to 0 for all rows in "members_stripe_customers_subscriptions"');
27
- await knex('members_stripe_customers_subscriptions').update('mrr', 0);
28
- }
29
- );
@@ -1,33 +0,0 @@
1
- const logging = require('@tryghost/logging');
2
- const {createNonTransactionalMigration} = require('../../utils');
3
-
4
- /**
5
- * Note: This doesn't use knex.alterTable as it doesn't work for down migration.
6
- * It tries to insert a `null` into non `nullable` column while altering column
7
- */
8
- module.exports = createNonTransactionalMigration(
9
- async function up(knex) {
10
- logging.info('Dropping NOT NULL constraint for: sender_name in table: newsletters');
11
-
12
- await knex.schema.table('newsletters', function (table) {
13
- table.dropColumn('sender_name');
14
- });
15
-
16
- await knex.schema.table('newsletters', function (table) {
17
- table.string('sender_name', 191).nullable();
18
- });
19
- },
20
- async function down(knex) {
21
- logging.info('Adding NOT NULL constraint for: sender_name in table: newsletters');
22
-
23
- await knex.schema.table('newsletters', function (table) {
24
- table.dropColumn('sender_name');
25
- });
26
-
27
- await knex.schema.table('newsletters', function (table) {
28
- // SQLite doesn't allow adding a non nullable column without any default
29
- table.string('sender_name', 191).notNullable().defaultTo('Ghost');
30
- });
31
- }
32
- );
33
-
@@ -1,9 +0,0 @@
1
- const {createAddColumnMigration} = require('../../utils');
2
-
3
- module.exports = createAddColumnMigration('members_stripe_customers_subscriptions', 'offer_id', {
4
- type: 'string',
5
- maxlength: 24,
6
- nullable: true,
7
- unique: false,
8
- references: 'offers.id'
9
- });
@@ -1,60 +0,0 @@
1
- const logging = require('@tryghost/logging');
2
- const DatabaseInfo = require('@tryghost/database-info');
3
-
4
- const {createTransactionalMigration} = require('../../utils');
5
-
6
- module.exports = createTransactionalMigration(
7
- async function up(knex) {
8
- logging.info('Backfilling "offer_id" column in "members_stripe_customers_subscriptions" by matching tier and cadence');
9
-
10
- const subquery = `
11
- SELECT
12
- members_stripe_customers_subscriptions.id as subscription_id,
13
- offer_redemptions.offer_id as offer_id
14
- FROM
15
- members_stripe_customers_subscriptions
16
- JOIN offer_redemptions ON offer_redemptions.subscription_id = members_stripe_customers_subscriptions.id
17
- JOIN offers ON offers.id = offer_redemptions.offer_id
18
- JOIN stripe_prices ON members_stripe_customers_subscriptions.stripe_price_id = stripe_prices.stripe_price_id
19
- JOIN stripe_products ON stripe_prices.stripe_product_id = stripe_products.stripe_product_id
20
- WHERE
21
- offers.product_id = stripe_products.product_id
22
- AND offers.interval = stripe_prices.interval
23
- AND members_stripe_customers_subscriptions.offer_id is null
24
- `;
25
-
26
- if (DatabaseInfo.isSQLite(knex)) {
27
- // Less optimized for SQLite
28
- const result = await knex.raw(subquery);
29
- const updatedRows = result.length;
30
- const subscriptionsToUpdate = result;
31
-
32
- logging.info(`Setting the offer_id for ${updatedRows} members_stripe_customers_subscriptions`);
33
-
34
- // eslint-disable-next-line no-restricted-syntax
35
- for (const u of subscriptionsToUpdate) {
36
- // eslint-disable-next-line no-restricted-syntax
37
- await knex('members_stripe_customers_subscriptions')
38
- .update('offer_id', u.offer_id)
39
- .where('id', u.subscription_id);
40
- }
41
- } else {
42
- // Single update query
43
- const query = `
44
- UPDATE
45
- members_stripe_customers_subscriptions,
46
- (${subquery}) as c
47
- SET members_stripe_customers_subscriptions.offer_id = c.offer_id
48
- WHERE c.subscription_id = members_stripe_customers_subscriptions.id
49
- `;
50
-
51
- const result = await knex.raw(query);
52
- const updatedRows = result[0].affectedRows;
53
-
54
- logging.info(`Updated ${updatedRows} members_stripe_customers_subscriptions with an offer_id`);
55
- }
56
- },
57
- async function down() {
58
- // We risk losing data if we would reset offer_id here
59
- }
60
- );
@@ -1,9 +0,0 @@
1
- const {addPermissionWithRoles} = require('../../utils');
2
-
3
- module.exports = addPermissionWithRoles({
4
- name: 'Read newsletters',
5
- action: 'read',
6
- object: 'newsletter'
7
- }, [
8
- 'Administrator'
9
- ]);
@@ -1,8 +0,0 @@
1
- const {addSetting} = require('../../utils');
2
-
3
- module.exports = addSetting({
4
- key: 'version_notifications',
5
- value: '[]',
6
- type: 'array',
7
- group: 'core'
8
- });
@@ -1,6 +0,0 @@
1
- const {createAddColumnMigration} = require('../../utils');
2
-
3
- module.exports = createAddColumnMigration('newsletters', 'created_at', {
4
- type: 'dateTime',
5
- nullable: true
6
- });
@@ -1,6 +0,0 @@
1
- const {createAddColumnMigration} = require('../../utils');
2
-
3
- module.exports = createAddColumnMigration('newsletters', 'updated_at', {
4
- type: 'dateTime',
5
- nullable: true
6
- });
@@ -1,19 +0,0 @@
1
- const logging = require('@tryghost/logging');
2
-
3
- const {createTransactionalMigration} = require('../../utils');
4
-
5
- module.exports = createTransactionalMigration(
6
- async function up(knex) {
7
- logging.info('Setting missing created_at values for existing newsletters');
8
-
9
- const now = knex.raw('CURRENT_TIMESTAMP');
10
- const updatedRows = await knex('newsletters')
11
- .where('created_at', null)
12
- .update('created_at', now);
13
-
14
- logging.info(`Updated ${updatedRows} newsletters with created_at = now`);
15
- },
16
- async function down() {
17
- // Not required: we would lose information here.
18
- }
19
- );
@@ -1,3 +0,0 @@
1
- const {createDropNullableMigration} = require('../../utils');
2
-
3
- module.exports = createDropNullableMigration('newsletters', 'created_at');
@@ -1,7 +0,0 @@
1
- const {createAddColumnMigration} = require('../../utils');
2
-
3
- module.exports = createAddColumnMigration('newsletters', 'show_header_name', {
4
- type: 'boolean',
5
- nullable: false,
6
- defaultTo: true
7
- });
@@ -1,8 +0,0 @@
1
- const {createAddColumnMigration} = require('../../utils');
2
-
3
- module.exports = createAddColumnMigration('newsletters', 'uuid', {
4
- type: 'string',
5
- maxlength: 36,
6
- nullable: true,
7
- unique: true
8
- });
@@ -1,19 +0,0 @@
1
- const logging = require('@tryghost/logging');
2
- const crypto = require('crypto');
3
- const {createTransactionalMigration} = require('../../utils');
4
-
5
- module.exports = createTransactionalMigration(
6
- async function up(knex) {
7
- const newslettersWithoutUUID = await knex.select('id').from('newsletters').whereNull('uuid');
8
-
9
- logging.info(`Adding uuid field value to ${newslettersWithoutUUID.length} newsletters.`);
10
-
11
- // eslint-disable-next-line no-restricted-syntax
12
- for (const newsletter of newslettersWithoutUUID) {
13
- await knex('newsletters').update('uuid', crypto.randomUUID()).where('id', newsletter.id);
14
- }
15
- },
16
- async function down() {
17
- // Not required: we would lose information here.
18
- }
19
- );
@@ -1,3 +0,0 @@
1
- const {createDropNullableMigration} = require('../../utils');
2
-
3
- module.exports = createDropNullableMigration('newsletters', 'uuid');