Ghost/ghost
Simon Backx b545dfa0cc
Improved recommendation controller structure (#18208)
fixes https://github.com/TryGhost/Product/issues/3900

1. The service never returns a Recommendation Entity, but always plain
objects (which for now is the same as Recommendation without the
methods).
2. Updated the controller to be more readable and minimal (we keep this
controller, in addition to the existing endpoints and serializers)
- The controller does minimal validation and allows for type checking
(so we get compile time errors in case the service expects new fields)
- The controller uses the `UnsafeData` class to easily validate the
input from requests, and throws appropriate errors (with correct field
descriptions — "Expected a string at recommendations.0.title") without
too much boilerplate code. In addition the interface is typed, so we get
compile errors if there are breaking changes in the service.
- Removed `EntityWithIncludes`, since we now use plain objects, we
inject the relations directly into those plain objects (with some new
types that add type support)
- Added new tests to make sure that edits only affect the given fields,
and never undefined fields
2023-09-18 14:36:49 +00:00
..
adapter-cache-memory-ttl Updated linting and testing packages 2023-09-01 15:51:17 +02:00
adapter-cache-redis Fixed test coverage checks in adapter-cache-redis package 2023-09-07 13:32:00 +08:00
adapter-manager Updated @tryghost/errors 1.2.21 to 1.2.24 2023-09-12 12:56:14 +02:00
admin Fixed collections card display when admin/front-end URLs are different (#18196) 2023-09-18 10:04:28 +00:00
announcement-bar-settings Updated linting and testing packages 2023-09-01 15:51:17 +02:00
api-framework Updated linting and testing packages 2023-09-01 15:51:17 +02:00
api-version-compatibility-service Updated linting and testing packages 2023-09-01 15:51:17 +02:00
audience-feedback Updated linting and testing packages 2023-09-01 15:51:17 +02:00
bookshelf-repository Added stats to recommendations endpoints 2023-09-15 15:57:27 +02:00
bootstrap-socket Updated linting and testing packages 2023-09-01 15:51:17 +02:00
collections Removed post delete related event handling 2023-09-15 13:50:25 +08:00
constants Updated linting and testing packages 2023-09-01 15:51:17 +02:00
core Improved recommendation controller structure (#18208) 2023-09-18 14:36:49 +00:00
custom-theme-settings-service Ensure hidden settings return falsy when used with the @custom helper (#17920) 2023-09-13 08:38:31 +01:00
data-generator Updated linting and testing packages 2023-09-01 15:51:17 +02:00
domain-events Fixed @tryghost/domain-events relying on NODE_ENV 2023-09-02 16:58:48 +07:00
donations Re-enabled general eslint rules in TS config 2023-09-08 13:47:42 +02:00
dynamic-routing-events Updated linting and testing packages 2023-09-01 15:51:17 +02:00
email-analytics-provider-mailgun Update Test & linting packages 2023-07-11 15:26:07 +02:00
email-analytics-service Update Test & linting packages 2023-07-11 15:26:07 +02:00
email-content-generator Updated linting and testing packages 2023-09-01 15:51:17 +02:00
email-events Updated linting and testing packages 2023-09-01 15:51:17 +02:00
email-service Update dependency html-validate to v8.4.0 2023-09-11 17:31:03 +02:00
email-suppression-list Updated linting and testing packages 2023-09-01 15:51:17 +02:00
event-aware-cache-wrapper Updated linting and testing packages 2023-09-01 15:51:17 +02:00
express-dynamic-redirects Updated linting and testing packages 2023-09-01 15:51:17 +02:00
external-media-inliner Updated linting and testing packages 2023-09-01 15:51:17 +02:00
extract-api-key Updated to use assert/strict everywhere (#17047) 2023-06-21 09:56:59 +01:00
html-to-plaintext Updated linting and testing packages 2023-09-01 15:51:17 +02:00
i18n Updated Bahasa Indonesia translations for Portal (#18162) 2023-09-15 12:49:38 +02:00
importer-handler-content-files Updated linting and testing packages 2023-09-01 15:51:17 +02:00
importer-revue 📦 Updated koenig dependencies (#17728) 2023-08-15 11:38:41 -05:00
in-memory-repository Updated linting and testing packages 2023-09-01 15:51:17 +02:00
job-manager Updated linting and testing packages 2023-09-01 15:51:17 +02:00
link-redirects Updated linting and testing packages 2023-09-01 15:51:17 +02:00
link-replacer Updated linting and testing packages 2023-09-01 15:51:17 +02:00
link-tracking Updated linting and testing packages 2023-09-01 15:51:17 +02:00
magic-link Update dependency @types/jsonwebtoken to v9.0.3 2023-09-18 08:51:04 +02:00
mail-events Re-enabled general eslint rules in TS config 2023-09-08 13:47:42 +02:00
mailgun-client Update dependency mailgun.js to v9.3.0 2023-09-18 14:01:45 +00:00
member-attribution Updated linting and testing packages 2023-09-01 15:51:17 +02:00
member-events Updated linting and testing packages 2023-09-01 15:51:17 +02:00
members-api Update dependency @types/jsonwebtoken to v9.0.3 2023-09-18 08:51:04 +02:00
members-csv Updated linting and testing packages 2023-09-01 15:51:17 +02:00
members-events-service Updated linting and testing packages 2023-09-01 15:51:17 +02:00
members-importer Updated linting and testing packages 2023-09-01 15:51:17 +02:00
members-ssr Update dependency @types/cookies to v0.7.8 2023-09-12 12:31:23 +02:00
mentions-email-report Updated linting and testing packages 2023-09-01 15:51:17 +02:00
milestones Updated linting and testing packages 2023-09-01 15:51:17 +02:00
minifier Update dependency terser to v5.19.4 2023-09-04 16:04:36 +00:00
model-to-domain-event-interceptor Removed post delete related event handling 2023-09-15 13:50:25 +08:00
mw-api-version-mismatch Updated linting and testing packages 2023-09-01 15:51:17 +02:00
mw-cache-control Updated linting and testing packages 2023-09-01 15:51:17 +02:00
mw-error-handler Updated linting and testing packages 2023-09-01 15:51:17 +02:00
mw-session-from-token Updated linting and testing packages 2023-09-01 15:51:17 +02:00
mw-update-user-last-seen Updated linting and testing packages 2023-09-01 15:51:17 +02:00
mw-version-match Updated linting and testing packages 2023-09-01 15:51:17 +02:00
mw-vhost Updated linting and testing packages 2023-09-01 15:51:17 +02:00
nql-filter-expansions Updated linting and testing packages 2023-09-01 15:51:17 +02:00
oembed-service 🐛 Fixed bookmark card creation and pasted link unfurls (#17990) 2023-09-06 11:30:56 +01:00
offers Moved OfferRepository to core 2023-09-02 16:58:48 +07:00
package-json Updated linting and testing packages 2023-09-01 15:51:17 +02:00
payments Updated linting and testing packages 2023-09-01 15:51:17 +02:00
post-events Removed post delete related event handling 2023-09-15 13:50:25 +08:00
post-revisions Updated linting and testing packages 2023-09-01 15:51:17 +02:00
posts-service Fixed transaction errors using PostsService inside of Post model's onSaving hook (#18148) 2023-09-14 17:22:10 +00:00
recommendations Improved recommendation controller structure (#18208) 2023-09-18 14:36:49 +00:00
referrers Updated linting and testing packages 2023-09-01 15:51:17 +02:00
security Update dependency uuid to v9.0.1 2023-09-12 12:29:51 +02:00
session-service Updated @tryghost/errors 1.2.21 to 1.2.24 2023-09-12 12:56:14 +02:00
settings-path-manager Updated linting and testing packages 2023-09-01 15:51:17 +02:00
slack-notifications Updated linting and testing packages 2023-09-01 15:51:17 +02:00
staff-service Update dependency handlebars to v4.7.8 2023-08-31 13:26:36 +00:00
stats-service Update dependency luxon to v3.4.3 2023-09-12 09:02:09 +02:00
stripe Updated linting and testing packages 2023-09-01 15:51:17 +02:00
tiers Updated linting and testing packages 2023-09-01 15:51:17 +02:00
update-check-service Update dependency uuid to v9.0.1 2023-09-12 12:29:51 +02:00
verification-trigger Updated linting and testing packages 2023-09-01 15:51:17 +02:00
version-notifications-data-service Updated linting and testing packages 2023-09-01 15:51:17 +02:00
webmentions Updated linting and testing packages 2023-09-01 15:51:17 +02:00
tsconfig.json Disabled TypeScript incremental building 2023-08-09 18:27:56 +02:00