mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-06 03:20:13 +08:00
Define routes, controllers of sessions
Work in progress, debugging
This commit is contained in:
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 })
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
@@ -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))
|
||||
@@ -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'
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in new issue
Block a user