mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-04-26 14:03:28 -04:00
intermediate
This commit is contained in:
parent
838012a2cf
commit
b951205681
4 changed files with 54 additions and 10 deletions
server
|
@ -8,7 +8,6 @@ ArticleSchema.plugin(plugins.VersionedPlugin)
|
|||
ArticleSchema.plugin(plugins.SearchablePlugin, {searchable: ['body', 'name']})
|
||||
ArticleSchema.plugin(plugins.PatchablePlugin)
|
||||
|
||||
|
||||
# Assumes every article save is a new version
|
||||
ArticleSchema.pre 'save', (next) ->
|
||||
return next() unless @get('creator')
|
||||
|
|
|
@ -21,5 +21,16 @@ LevelSchema.pre 'init', (next) ->
|
|||
LevelSchema.post 'init', (doc) ->
|
||||
if _.isString(doc.get('nextLevel'))
|
||||
doc.set('nextLevel', undefined)
|
||||
|
||||
# Assumes every level save is a new level
|
||||
LevelSchema.pre 'save', (next) ->
|
||||
return next() unless @get('creator')
|
||||
User = require '../users/User' # Avoid mutual inclusion cycles
|
||||
|
||||
userID = @get('creator').toHexString()
|
||||
User.update {_id: userID}, {$inc: 'stats.levelEdits': 1}, {}, (err, docs) ->
|
||||
log.error err if err?
|
||||
|
||||
next()
|
||||
|
||||
module.exports = Level = mongoose.model('level', LevelSchema)
|
||||
|
|
|
@ -256,6 +256,16 @@ module.exports.VersionedPlugin = (schema) ->
|
|||
)
|
||||
)
|
||||
|
||||
schema.pre 'save', (next) ->
|
||||
return next() unless @get('creator')
|
||||
User = require '../users/User' # Avoid mutual inclusion cycles
|
||||
|
||||
userID = @get('creator').toHexString()
|
||||
User.update {_id: userID}, {$inc: 'stats.levelEdits': 1}, {}, (err, docs) ->
|
||||
log.error err if err?
|
||||
|
||||
next()
|
||||
|
||||
|
||||
module.exports.SearchablePlugin = (schema, options) ->
|
||||
# this plugin must be added only after the others (specifically Versioned and Permissions)
|
||||
|
|
|
@ -375,6 +375,23 @@ UserHandler = class UserHandler extends Handler
|
|||
return @sendNotFoundError res unless remark?
|
||||
@sendSuccess res, remark
|
||||
|
||||
countEdits = (model, statKey, done) ->
|
||||
User.find {}, (err, users) ->
|
||||
async.eachSeries users, ((user, doneWithUser) ->
|
||||
userID = user.get('_id').toHexString()
|
||||
|
||||
model.count {creator: userID}, (err, count) ->
|
||||
if count
|
||||
update = $set: {}
|
||||
update.$set[statKey] = count
|
||||
else
|
||||
update = $unset: {}
|
||||
update.$unset[statKey] = ''
|
||||
User.findByIdAndUpdate user.get('_id'), update, (err) ->
|
||||
log.error err if err?
|
||||
doneWithUser()
|
||||
), done
|
||||
|
||||
statHandlers:
|
||||
gamesCompleted: (done) ->
|
||||
LevelSession = require '../levels/sessions/LevelSession'
|
||||
|
@ -392,17 +409,24 @@ UserHandler = class UserHandler extends Handler
|
|||
|
||||
articleEdits: (done) ->
|
||||
Article = require '../articles/Article'
|
||||
countEdits Article, 'stats.articleEdits', done
|
||||
|
||||
User.find {}, (err, users) ->
|
||||
async.eachSeries users, ((user, doneWithUser) ->
|
||||
userID = user.get('_id').toHexString()
|
||||
levelEdits: (done) ->
|
||||
Level = require '../levels/Level'
|
||||
countEdits Level, 'stats.levelEdits', done
|
||||
|
||||
levelComponentEdits: (done) ->
|
||||
LevelComponent = require '../levels/components/LevelComponent'
|
||||
countEdits LevelComponent, 'stats.levelComponentEdits', done
|
||||
|
||||
levelSystemEdits: (done) ->
|
||||
LevelSystem = require '../levels/systems/LevelSystem'
|
||||
countEdits LevelSystem, 'stats.levelSystemEdits', done
|
||||
|
||||
thangTypeEdits: (done) ->
|
||||
ThangType = require '../levels/thangs/ThangType'
|
||||
countEdits ThangType, 'stats.thangTypeEdits', done
|
||||
|
||||
Article.count {creator: userID}, (err, count) ->
|
||||
update = if count then {$set: 'stats.articleEdits': count} else {$unset: 'stats.articleEdits': ''}
|
||||
User.findByIdAndUpdate user.get('_id'), update, (err) ->
|
||||
log.error err if err?
|
||||
doneWithUser()
|
||||
), done
|
||||
|
||||
recalculate: (req, res, statName) ->
|
||||
return @sendForbiddenError(res) unless req.user.isAdmin()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue