@@ -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 } ` ) ) ;
0 commit comments