40ee2043e0
closes https://linear.app/tryghost/issue/MOM-97 The 30s search content expiry didn't really make sense and caused unnecessary delays and server load now that search will be more widely used within the editor. - replaced concept of time-based expiry with explicit expiry - content still fetched on query if not already loaded or marked as stale - added `.expireContent()` method on search service to allow explicit expiry - updated editor to pre-fetch search content when not already loaded or marked as stale - removes delay when first using internal linking search inside the editor - updated post model to expire search content on save - expires on published post save or delete - expires on publish and unpublish - updated tag model to expire content on create/save/delete - only expires when name or url is changed - updated user model to expire on save/delete - only expires when name or url is changed - does not handle creation because that's done server-side via invites
33 lines
868 B
JavaScript
33 lines
868 B
JavaScript
import BaseSerializer from './application';
|
|
|
|
export default BaseSerializer.extend({
|
|
embed: true,
|
|
|
|
include(/*request*/) {
|
|
let includes = [];
|
|
|
|
includes.push('tags');
|
|
includes.push('authors');
|
|
|
|
return includes;
|
|
},
|
|
|
|
serialize(postModelOrCollection, request) {
|
|
const updatePost = (post) => {
|
|
if (post.status === 'published') {
|
|
post.update('url', `http://localhost:4200/${post.slug}/`);
|
|
} else {
|
|
post.update('url', `http://localhost:4200/p/`);
|
|
}
|
|
};
|
|
|
|
if (this.isModel(postModelOrCollection)) {
|
|
updatePost(postModelOrCollection);
|
|
} else {
|
|
postModelOrCollection.models.forEach(updatePost);
|
|
}
|
|
|
|
return BaseSerializer.prototype.serialize.call(this, postModelOrCollection, request);
|
|
}
|
|
});
|