Set up some new session handlers for the upcoming multiplayer, allowing one session for each team.
This commit is contained in:
parent
9105888685
commit
fa809308b2
1 changed files with 21 additions and 0 deletions
|
@ -23,6 +23,7 @@ LevelHandler = class LevelHandler extends Handler
|
|||
|
||||
getByRelationship: (req, res, args...) ->
|
||||
return @getSession(req, res, args[0]) if args[1] is 'session'
|
||||
return @getAllSessions(req, res, args[0]) if args[1] is 'all_sessions'
|
||||
return @getFeedback(req, res, args[0]) if args[1] is 'feedback'
|
||||
return @sendNotFoundError(res)
|
||||
|
||||
|
@ -36,6 +37,9 @@ LevelHandler = class LevelHandler extends Handler
|
|||
level: {original: level.original.toString(), majorVersion: level.version.major}
|
||||
creator: req.user.id
|
||||
}
|
||||
|
||||
sessionQuery.team = req.query.team if req.query.team
|
||||
|
||||
Session.findOne(sessionQuery).exec (err, doc) =>
|
||||
return @sendDatabaseError(res, err) if err
|
||||
if doc
|
||||
|
@ -45,6 +49,7 @@ LevelHandler = class LevelHandler extends Handler
|
|||
initVals = sessionQuery
|
||||
initVals.state = {complete:false, scripts:{currentScript:null}} # will not save empty objects
|
||||
initVals.permissions = [{target:req.user.id, access:'owner'}, {target:'public', access:'write'}]
|
||||
initVals.team = req.query.team if req.query.team
|
||||
session = new Session(initVals)
|
||||
session.save (err) =>
|
||||
return @sendDatabaseError(res, err) if err
|
||||
|
@ -53,6 +58,22 @@ LevelHandler = class LevelHandler extends Handler
|
|||
# associated with the handler, because the handler might return a different type
|
||||
# of model, like in this case. Refactor to move that logic to the model instead.
|
||||
|
||||
getAllSessions: (req, res, id) ->
|
||||
@getDocumentForIdOrSlug id, (err, level) =>
|
||||
return @sendDatabaseError(res, err) if err
|
||||
return @sendNotFoundError(res) unless level?
|
||||
return @sendUnauthorizedError(res) unless @hasAccessToDocument(req, level)
|
||||
|
||||
sessionQuery = {
|
||||
level: {original: level.original.toString(), majorVersion: level.version.major}
|
||||
creator: req.user.id
|
||||
}
|
||||
|
||||
Session.find(sessionQuery).exec (err, results) =>
|
||||
return @sendDatabaseError(res, err) if err
|
||||
res.send(results)
|
||||
return res.end()
|
||||
|
||||
getFeedback: (req, res, id) ->
|
||||
@getDocumentForIdOrSlug id, (err, level) =>
|
||||
return @sendDatabaseError(res, err) if err
|
||||
|
|
Reference in a new issue