Define routes, controllers of sessions

Work in progress, debugging
This commit is contained in:
wancat committed 2023-07-19 16:42:09 +08:00
1 parent 50443b96e0
commit 04edfdd0dc
13 files changed
+1835 -60

No files matched your search

@@ -0,0 +1,60 @@
import Session from '../../models/session.js'
export async function getSessionList(req, res) {
try {
const sessions = await Session.find({ user: req.user.id })
res.json(sessions)
} catch (err) {
res.status(500).json({ message: err.message })
}
}
export async function createSession(req, res) {
const newSession = new Session({
user: req.user.id,
exercise: req.body.exercise_id,
})
try {
const session = await newSession.save()
res.status(201).json(session)
} catch (err) {
res.status(400).json({ message: err.message })
}
}
export async function getSessionById(req, res) {
try {
const session = await Session.findOne({
_id: req.params.session_id,
user: req.user.id,
})
if (!session) {
res.status(404).json({ message: 'Session not found.' })
return
}
res.json(session)
} catch (err) {
res.status(500).json({ message: err.message })
}
}
export async function deleteSessionById(req, res) {
try {
const session = await Session.findOneAndDelete({
_id: req.params.session_id,
user: req.user.id,
})
if (!session) {
res.status(404).json({ message: 'Session not found.' })
return
}
res.status(204).end()
} catch (err) {
res.status(500).json({ message: err.message })
}
}
+12
View File
@@ -0,0 +1,12 @@
import { Router } from 'express'
import sessions from './sessions.js'
const router = Router()
router.get('/', (req, res) => {
res.send('Hello API!')
})
router.use('/sessions', sessions)
export default router
+11
View File
@@ -0,0 +1,11 @@
import { Router } from 'express'
import * as sessionController from '../controllers/sessionController.js'
const router = Router()
router.get('/', sessionController.getSessionList)
router.post('/', sessionController.createSession)
router.get('/:id', sessionController.getSessionById)
router.delete('/:id', sessionController.deleteSessionById)
export default router
+22 -15
View File
@@ -1,4 +1,4 @@
import fs from 'fs'
import fs from 'fs/promises'
import express from 'express'
import http from 'http'
import YAML from 'yaml'
@@ -6,21 +6,28 @@ import swaggerUI from 'swagger-ui-express'
import socketServer from './api/socket.js'
import connectDB from './db.js'
import apiRouter from './api/routes/index.js'
const port = 3000
const app = express()
const server = http.createServer(app)
socketServer(server)
connectDB()
async function main() {
const port = 3000
const app = express()
const server = http.createServer(app)
socketServer(server)
await connectDB()
const file = fs.readFileSync('./swagger.yaml', 'utf8')
const swaggerDocument = YAML.parse(file)
app.use('/api-docs', swaggerUI.serve, swaggerUI.setup(swaggerDocument))
const file = await fs.readFile('./swagger.yaml', 'utf8')
const swaggerDocument = YAML.parse(file)
app.use('/api-docs', swaggerUI.serve, swaggerUI.setup(swaggerDocument))
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.get('/', (req, res) => {
res.send('Hello World!')
})
server.listen(port, () => {
console.log(`Server listening at http://localhost:${port}`)
})
app.use('/api/v1', apiRouter)
server.listen(port, () => {
console.log(`Server listening at http://localhost:${port}`)
})
}
main().catch((err) => console.log(err))
-3
View File
@@ -1,3 +0,0 @@
export { default as User } from './user.js'
export { default as Session } from './session.js'
export { default as Quest } from './quest.js'
+11 -6
View File
@@ -1,10 +1,15 @@
import { model } from 'mongoose'
import { Schema } from 'yaml'
export default model(
const Quest = model(
'Quest',
{
name: String,
description: String,
},
{ timestamp: true }
new Schema(
{
name: String,
description: String,
},
{ timestamp: true }
)
)
export default Quest
+19 -15
View File
@@ -1,20 +1,24 @@
import { model, Schema } from 'mongoose'
export default model(
const Session = model(
'Session',
{
name: String,
containerId: String,
user: {
type: Schema.ObjectId,
ref: 'User',
new Schema(
{
name: String,
containerId: String,
user: {
type: Schema.ObjectId,
ref: 'User',
},
quest: {
type: Schema.ObjectId,
ref: 'Quest',
},
finishedAt: Date,
terminals: [String],
},
quest: {
type: Schema.ObjectId,
ref: 'Quest',
},
finishedAt: Date,
terminals: [String],
},
{ timestamps: true }
{ timestamps: true }
)
)
export default Session
+4 -2
View File
@@ -1,7 +1,9 @@
import mongoose from 'mongoose'
import { model } from 'mongoose'
export default mongoose.model('User', {
const User = model('User', {
username: String,
password: String,
email: String,
})
export default User