diff --git a/server/src/api/controllers/questController.js b/server/src/api/controllers/questController.js index ff33737..893b384 100644 --- a/server/src/api/controllers/questController.js +++ b/server/src/api/controllers/questController.js @@ -15,5 +15,9 @@ export async function getQuests(req, res) { export async function getQuestDetail(req, res) { const { name } = req.params const quest = await Quest.findOne({ name }) + if (!quest) { + res.status(404).json({ message: 'Quest not found.' }) + return + } res.json(quest) } diff --git a/server/src/models/quest.js b/server/src/models/quest.js index f7af7b4..e4dffe4 100644 --- a/server/src/models/quest.js +++ b/server/src/models/quest.js @@ -2,15 +2,12 @@ import { model, Schema } from 'mongoose' const Quest = model( 'Quest', - new Schema( - { - name: String, - title: String, - order: Number, - content: String, - }, - { timestamps: true } - ) + new Schema({ + name: String, + title: String, + order: Number, + content: String, + }) ) export default Quest diff --git a/server/swagger.yaml b/server/swagger.yaml index 28645a7..ce2d047 100644 --- a/server/swagger.yaml +++ b/server/swagger.yaml @@ -250,6 +250,45 @@ paths: schema: $ref: '#/components/schemas/User' + /quests: + get: + summary: Get quests list + responses: + '200': + description: Quests summary list + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/QuestSummary' + + /quests/{quest_name}: + get: + summary: get a quest's detail by name + parameters: + - in: path + name: quest_name + description: name of the quest to retrieve + required: true + schema: + type: string + responses: + '200': + description: the quest + content: + application/json: + schema: + $ref: '#/components/schemas/Quest' + '404': + description: cannot find specific quest + content: + application/json: + schema: + type: object + properties: + message: + type: string components: schemas: User: @@ -267,10 +306,31 @@ components: Quest: type: object properties: + id: + type: string + format: objectId name: type: string - description: + title: type: string + content: + type: string + format: html + order: + type: number + + QuestSummary: + type: object + properties: + id: + type: string + format: objectId + name: + type: string + title: + type: string + order: + type: number Session: type: object