Skip to content

Commit 57aa9c6

Browse files
authored
Merge pull request #98 from ember-cli-deploy/update-io-redis
Update ioredis and ioredismock
2 parents 9752482 + e85322c commit 57aa9c6

File tree

5 files changed

+90
-144
lines changed

5 files changed

+90
-144
lines changed

index.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ module.exports = {
148148
let redisDeployClient = this.readConfig('redisDeployClient');
149149
let keyPrefix = this.readConfig('keyPrefix');
150150

151-
this.log(`Listing initial revisions for key: \`${keyPrefix}\``, { verbose: true });
151+
this.log(`Fetching initial revisions for key: \`${keyPrefix}\``, { verbose: true });
152152
try {
153153
let initialRevisions = await redisDeployClient.fetchRevisions(keyPrefix);
154154
return {
@@ -163,8 +163,7 @@ module.exports = {
163163
async fetchRevisions(/* context */) {
164164
let redisDeployClient = this.readConfig('redisDeployClient');
165165
let keyPrefix = this.readConfig('keyPrefix');
166-
167-
this.log(`Listing revisions for key: \`${keyPrefix}\``);
166+
this.log(`Fetching revisions for key: \`${keyPrefix}\``, { verbose: true });
168167
try {
169168
let revisions = await redisDeployClient.fetchRevisions(keyPrefix);
170169
return {

lib/redis.js

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ module.exports = CoreObject.extend({
3131

3232
this._client = new RedisLib(redisOptions);
3333

34-
this._maxRecentUploads = options.maxRecentUploads;
35-
this._allowOverwrite = options.allowOverwrite;
34+
this._maxRecentUploads = options.maxRecentUploads || 10;
35+
this._allowOverwrite = options.allowOverwrite || false;
3636
this._activationSuffix = options.activationSuffix || 'current';
3737
},
3838

@@ -63,24 +63,22 @@ module.exports = CoreObject.extend({
6363

6464
async fetchRevisions(keyPrefix) {
6565
let revisions = await this._listRevisions(keyPrefix);
66-
let results = await RSVP.hash({
67-
current: this.activeRevision(keyPrefix),
68-
revisionData: this._revisionData(keyPrefix, revisions)
69-
});
66+
let current = await this.activeRevision(keyPrefix);
67+
let revisionData = await this._revisionData(keyPrefix, revisions);
7068
return revisions.map(function(revision, i) {
7169
let hash = {
7270
revision: revision,
73-
active: revision === results.current,
71+
active: revision === current,
7472
};
75-
if (results.revisionData) {
76-
hash.revisionData = results.revisionData[i];
73+
if (revisionData) {
74+
hash.revisionData = revisionData[i];
7775
}
7876
return hash;
7977
});
8078
},
8179

8280
activeRevision(keyPrefix) {
83-
var currentKey = keyPrefix + ':' + this._activationSuffix;
81+
let currentKey = keyPrefix + ':' + this._activationSuffix;
8482
return this._client.get(currentKey);
8583
},
8684

@@ -90,7 +88,7 @@ module.exports = CoreObject.extend({
9088
}
9189
let dataKeys = revisions.map((rev) => `${keyPrefix}:revision-data:${rev}`);
9290

93-
let data = this._client.mget(dataKeys);
91+
let data = await this._client.mget(dataKeys);
9492
if (!data) {
9593
return;
9694
}
@@ -161,17 +159,17 @@ module.exports = CoreObject.extend({
161159
let client = this._client;
162160
let listKey = `${keyPrefix}:revisions`;
163161

164-
let results = await RSVP.hash({
165-
revisionsToBeRemoved: client.zrange(listKey, 0, -(maxEntries + 1)),
166-
current: this.activeRevision(keyPrefix)
167-
});
168-
let revisions = results.revisionsToBeRemoved;
169-
let current = results.current;
170-
if (!revisions) {
162+
let revisionCount = await client.zcard(listKey);
163+
let revisionsToBeRemoved;
164+
if (revisionCount > maxEntries) {
165+
revisionsToBeRemoved = await client.zrange(listKey, 0, revisionCount - maxEntries - 1);
166+
}
167+
if (!revisionsToBeRemoved) {
171168
return;
172169
}
170+
let current = await this.activeRevision(keyPrefix);
173171
let promises = [];
174-
revisions.forEach(function(revision) {
172+
revisionsToBeRemoved.forEach(function(revision) {
175173
if (revision !== current) {
176174
promises.push(client.del(`${keyPrefix}:${revision}`));
177175
promises.push(client.del(`${keyPrefix}:revision-data:${revision}`));

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"chalk": "^4.0.0",
2121
"core-object": "^3.1.5",
2222
"ember-cli-deploy-plugin": "^0.2.9",
23-
"ioredis": "^3.2.2",
23+
"ioredis": "^4.17.0",
2424
"rsvp": "^4.8.5"
2525
},
2626
"devDependencies": {
@@ -29,8 +29,8 @@
2929
"chai-as-promised": "^7.1.1",
3030
"ember-cli": "^3.18.0",
3131
"eslint": "^7.0.0",
32-
"ioredis-mock": "^3.14.0",
3332
"glob": "^7.1.6",
33+
"ioredis-mock": "^4.19.0",
3434
"mocha": "^7.1.2",
3535
"release-it": "*",
3636
"sinon": "^9.0.2"

tests/unit/lib/redis-test.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,13 @@ describe('redis', function () {
5151
maxRecentUploads: 2
5252
}, IoredisMock);
5353

54-
await redis.upload('key', 1, '1value');
55-
await redis.upload('key', 2, '2value');
56-
await redis.upload('key', 3, '3value');
57-
let values = await redis._client.mget('key:1', 'key:revision-data:1')
58-
assert.equal(values.filter(Boolean).length, 0, 'Expected key:1 and key:revision-data:1 to be deleted.');
59-
let value = await redis._client.zrange('key:revisions', 0, -1);
60-
assert.deepEqual(value, ['2', '3']);
54+
await redis.upload('key', 1, '1value');
55+
await redis.upload('key', 2, '2value');
56+
await redis.upload('key', 3, '3value');
57+
let values = await redis._client.mget('key:1', 'key:revision-data:1')
58+
assert.equal(values.filter(Boolean).length, 0, 'Expected key:1 and key:revision-data:1 to be deleted.');
59+
let value = await redis._client.zrange('key:revisions', 0, -1);
60+
assert.deepEqual(value, ['2', '3']);
6161
});
6262

6363
it('trims the list of recent uploads but leaves the active one', async function () {

0 commit comments

Comments
 (0)