From 0306c397d04779d22d93c3660fdf3f594da5e756 Mon Sep 17 00:00:00 2001 From: Naz Gargol Date: Thu, 12 Sep 2019 17:39:16 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A5=20Removed=20v0.1=20leftover=20code?= =?UTF-8?q?=20in=20model=20layer=20(#11107)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit no issue - Removed redundant model code in users - Removed v0.1 specific attribute removal on model layer for post - Removed property deletions comments handled in serialization layer - Removed unused token.added listener. users.last_seen is populated on middleware layer when a new access token is created - Removed unneeded test for setting last_seen in users --- .../utils/serializers/output/utils/clean.js | 4 -- .../utils/serializers/output/utils/clean.js | 4 -- core/server/models/base/listeners.js | 14 ------- core/server/models/post.js | 7 ---- core/server/models/tag.js | 4 -- core/server/models/user.js | 11 ----- core/test/unit/models/base/listeners_spec.js | 41 ------------------- 7 files changed, 85 deletions(-) delete mode 100644 core/test/unit/models/base/listeners_spec.js diff --git a/core/server/api/canary/utils/serializers/output/utils/clean.js b/core/server/api/canary/utils/serializers/output/utils/clean.js index 5c9f74d11d..a1ac1d7c6b 100644 --- a/core/server/api/canary/utils/serializers/output/utils/clean.js +++ b/core/server/api/canary/utils/serializers/output/utils/clean.js @@ -18,10 +18,7 @@ const tag = (attrs, frame) => { } } - // Already deleted in model.toJSON, but leaving here so that we can clean that up when we deprecate v0.1 delete attrs.parent_id; - - // @NOTE: unused fields delete attrs.parent; return attrs; @@ -29,7 +26,6 @@ const tag = (attrs, frame) => { const author = (attrs, frame) => { if (localUtils.isContentAPI(frame)) { - // Already deleted in model.toJSON, but leaving here so that we can clean that up when we deprecate v0.1 delete attrs.created_at; delete attrs.updated_at; delete attrs.last_seen; diff --git a/core/server/api/v2/utils/serializers/output/utils/clean.js b/core/server/api/v2/utils/serializers/output/utils/clean.js index 85c5b999c5..950fc63be9 100644 --- a/core/server/api/v2/utils/serializers/output/utils/clean.js +++ b/core/server/api/v2/utils/serializers/output/utils/clean.js @@ -18,10 +18,7 @@ const tag = (attrs, frame) => { } } - // Already deleted in model.toJSON, but leaving here so that we can clean that up when we deprecate v0.1 delete attrs.parent_id; - - // @NOTE: unused fields delete attrs.parent; return attrs; @@ -29,7 +26,6 @@ const tag = (attrs, frame) => { const author = (attrs, frame) => { if (localUtils.isContentAPI(frame)) { - // Already deleted in model.toJSON, but leaving here so that we can clean that up when we deprecate v0.1 delete attrs.created_at; delete attrs.updated_at; delete attrs.last_seen; diff --git a/core/server/models/base/listeners.js b/core/server/models/base/listeners.js index ea25f4d002..a7e6bf2278 100644 --- a/core/server/models/base/listeners.js +++ b/core/server/models/base/listeners.js @@ -4,20 +4,6 @@ var moment = require('moment-timezone'), common = require('../../lib/common'), sequence = require('../../lib/promise/sequence'); -/** - * @TODO REMOVE WHEN v0.1 IS DROPPED - * WHEN access token is created we will update last_seen for user. - */ -common.events.on('token.added', function (tokenModel) { - models.User.findOne({id: tokenModel.get('user_id')}) - .then(function (user) { - return user.updateLastSeen(); - }) - .catch(function (err) { - common.logging.error(new common.errors.GhostError({err: err, level: 'critical'})); - }); -}); - /** * WHEN timezone changes, we will: * - reschedule all scheduled posts diff --git a/core/server/models/post.js b/core/server/models/post.js index 690c82f7b2..a0d78bf835 100644 --- a/core/server/models/post.js +++ b/core/server/models/post.js @@ -572,13 +572,6 @@ Post = ghostBookshelf.Model.extend({ // CASE: never expose the revisions delete attrs.mobiledoc_revisions; - // expose canonical_url only for API v2 calls - // NOTE: this can be removed when API v0.1 is dropped. A proper solution for field - // differences on resources like this would be an introduction of API output schema - if (!_.get(unfilteredOptions, 'extraProperties', []).includes('canonical_url')) { - delete attrs.canonical_url; - } - // If the current column settings allow it... if (!options.columns || (options.columns && options.columns.indexOf('primary_tag') > -1)) { // ... attach a computed property of primary_tag which is the first tag if it is public, else null diff --git a/core/server/models/tag.js b/core/server/models/tag.js index ae6fa64a01..e867cecdae 100644 --- a/core/server/models/tag.js +++ b/core/server/models/tag.js @@ -63,10 +63,6 @@ Tag = ghostBookshelf.Model.extend({ var options = Tag.filterOptions(unfilteredOptions, 'toJSON'), attrs = ghostBookshelf.Model.prototype.toJSON.call(this, options); - // @NOTE: this serialization should be moved into api layer, it's not being moved as it's not used - attrs.parent = attrs.parent || attrs.parent_id; - delete attrs.parent_id; - return attrs; }, diff --git a/core/server/models/user.js b/core/server/models/user.js index 5d204260a8..168bce8edf 100644 --- a/core/server/models/user.js +++ b/core/server/models/user.js @@ -223,17 +223,6 @@ User = ghostBookshelf.Model.extend({ delete attrs.email; } - // @TODO remove this when we remove v0.1 API as its handled in serialization for v2 - // We don't expose these fields when fetching data via the public API. - if (options && options.context && options.context.public) { - delete attrs.created_at; - delete attrs.created_by; - delete attrs.updated_at; - delete attrs.updated_by; - delete attrs.last_seen; - delete attrs.status; - } - return attrs; }, diff --git a/core/test/unit/models/base/listeners_spec.js b/core/test/unit/models/base/listeners_spec.js deleted file mode 100644 index fc1a001f75..0000000000 --- a/core/test/unit/models/base/listeners_spec.js +++ /dev/null @@ -1,41 +0,0 @@ -var should = require('should'), - sinon = require('sinon'), - rewire = require('rewire'), - common = require('../../../../server/lib/common'), - Models = require('../../../../server/models'); - -describe('Models: listeners', function () { - var eventsToRemember = {}; - const emit = (event, data) => eventsToRemember[event](data); - - before(function () { - sinon.stub(common.events, 'on').callsFake(function (name, callback) { - eventsToRemember[name] = callback; - }); - - rewire('../../../../server/models/base/listeners'); - Models.init(); - }); - - afterEach(function () { - sinon.restore(); - }); - - describe('on token added', function () { - it('calls updateLastSeen on the user when the token.added event is emited', function (done) { - const userId = 1; - const user = Models.User.forge({id: 1}); - sinon.stub(Models.User, 'findOne').withArgs({id: userId}).resolves(user); - const updateLastSeenSpy = sinon.stub(user, 'updateLastSeen').callsFake(function () { - updateLastSeenSpy.calledOnce.should.be.true(); - done(); - }); - - const fakeToken = { - get: sinon.stub().withArgs('user_id').returns(userId) - }; - - emit('token.added', fakeToken); - }); - }); -});