moved api from monorepo
This commit is contained in:
135
controllers/adminGames.js
Normal file
135
controllers/adminGames.js
Normal file
@ -0,0 +1,135 @@
|
||||
import Game from '../models/Game.js'
|
||||
import steamScraper from '../scripts/scraper.js'
|
||||
import asyncHandler from '../middleware/async.js'
|
||||
import ErrorResponse from '../utils/errorResponse.js'
|
||||
|
||||
const checkForHexRegExp = new RegExp('^[0-9a-fA-F]{24}$')
|
||||
const checkForTwelveRegExp = new RegExp('^[0-9a-fA-F]{12}$')
|
||||
import {decode, isValid} from 'js-base64'
|
||||
|
||||
/**
|
||||
* games.js
|
||||
*
|
||||
* @description :: Server-side logic for managing games.
|
||||
*/
|
||||
/**
|
||||
* gameController.list()
|
||||
*/
|
||||
export const list = asyncHandler(async (req, res, next) => {
|
||||
return res.status(200).json(res.advancedResults)
|
||||
})
|
||||
|
||||
/**
|
||||
* gameController.show()
|
||||
*/
|
||||
export const show = asyncHandler(async (req, res, next) => {
|
||||
const { id } = req.params
|
||||
const gameId =
|
||||
id === id.match(checkForTwelveRegExp) || id.match(checkForHexRegExp)
|
||||
? '_id'
|
||||
: 'steamId'
|
||||
const game = await Game.findOne({ [gameId]: id }).select('-__v')
|
||||
|
||||
return res.status(200).json({
|
||||
success: true,
|
||||
data: game,
|
||||
})
|
||||
})
|
||||
|
||||
/**
|
||||
* gameController.create()
|
||||
*/
|
||||
export const create = asyncHandler(async (req, res, next) => {
|
||||
let oldGame
|
||||
req.body.steamId.length > 0
|
||||
? (oldGame = await Game.findOne({ steamId: req.body.steamId }))
|
||||
: (oldGame = await Game.findOne({ title: req.body.title }))
|
||||
|
||||
if (oldGame)
|
||||
return next(
|
||||
new ErrorResponse(`The game ${oldGame.title} already exists`, 400)
|
||||
)
|
||||
|
||||
req.body.createdBy = req.user.id
|
||||
req.body.lastModifiedBy = req.user.id
|
||||
req.body.accessedBy[0].user = req.user.id
|
||||
const data =
|
||||
req.body.scrape === true ? await steamScraper(req.body) : req.body
|
||||
|
||||
if (req.body.scrape === false) {
|
||||
if (req.body.shortDesc && isValid(req.body.shortDesc)) req.body.shortDesc = decode(req.body.shortDesc)
|
||||
if (req.body.reviews && isValid(req.body.reviews)) req.body.reviews = decode(req.body.reviews)
|
||||
if (req.body.summary && isValid(req.body.summary)) req.body.summary = decode(req.body.summary)
|
||||
isValid(req.body.systemRequirements?.windows?.minimum) ? req.body.systemRequirements.windows.minimum = decode(req.body.systemRequirements.windows.minimum) : ''
|
||||
isValid(req.body.systemRequirements?.windows?.recommended) ? req.body.systemRequirements.windows.recommended = decode(req.body.systemRequirements.windows.recommended) : ''
|
||||
isValid(req.body.systemRequirements?.mac?.minimum) ? req.body.systemRequirements.mac.minimum = decode(req.body.systemRequirements.mac.minimum) : ''
|
||||
isValid(req.body.systemRequirements?.mac?.recommended) ? req.body.systemRequirements.mac.recommended = decode(req.body.systemRequirements.mac.recommended) : ''
|
||||
isValid(req.body.systemRequirements?.linux?.minimum) ? req.body.systemRequirements.linux.minimum = decode(req.body.systemRequirements.linux.minimum) : ''
|
||||
isValid(req.body.systemRequirements?.linux?.recommended) ? req.body.systemRequirements.linux.recommended = decode(req.body.systemRequirements.linux.recommended) : ''
|
||||
}
|
||||
|
||||
const game = await Game.create(data)
|
||||
|
||||
res.status(200).json({
|
||||
success: true,
|
||||
data: game,
|
||||
})
|
||||
})
|
||||
|
||||
/**
|
||||
* gameController.update()
|
||||
*/
|
||||
export const update = asyncHandler(async (req, res, next) => {
|
||||
const { id } = req.params
|
||||
|
||||
const gameId =
|
||||
id === id.match(checkForTwelveRegExp) || id.match(checkForHexRegExp)
|
||||
? '_id'
|
||||
: 'steamId'
|
||||
|
||||
let game = await Game.findOne({ [gameId]: id })
|
||||
|
||||
if (!game)
|
||||
return next(
|
||||
ErrorResponse(`A game with the id of ${id} does not exist`, 401),
|
||||
)
|
||||
|
||||
|
||||
req.body.lastModifiedBy = req.user.id
|
||||
if (req.body.shortDesc && isValid(req.body.shortDesc)) req.body.shortDesc = decode(req.body.shortDesc)
|
||||
if (req.body.reviews && isValid(req.body.reviews)) req.body.reviews = decode(req.body.reviews)
|
||||
if (req.body.summary && isValid(req.body.summary)) req.body.summary = decode(req.body.summary)
|
||||
isValid(req.body.systemRequirements?.windows?.minimum) ? req.body.systemRequirements.windows.minimum = decode(req.body.systemRequirements.windows.minimum) : ''
|
||||
isValid(req.body.systemRequirements?.windows?.recommended) ? req.body.systemRequirements.windows.recommended = decode(req.body.systemRequirements.windows.recommended) : ''
|
||||
isValid(req.body.systemRequirements?.mac?.minimum) ? req.body.systemRequirements.mac.minimum = decode(req.body.systemRequirements.mac.minimum) : ''
|
||||
isValid(req.body.systemRequirements?.mac?.recommended) ? req.body.systemRequirements.mac.recommended = decode(req.body.systemRequirements.mac.recommended) : ''
|
||||
isValid(req.body.systemRequirements?.linux?.minimum) ? req.body.systemRequirements.linux.minimum = decode(req.body.systemRequirements.linux.minimum) : ''
|
||||
isValid(req.body.systemRequirements?.linux?.recommended) ? req.body.systemRequirements.linux.recommended = decode(req.body.systemRequirements.linux.recommended) : ''
|
||||
|
||||
const data =
|
||||
req.body.scrape === true ? await steamScraper(req.body) : req.body
|
||||
|
||||
game = await Game.findOneAndUpdate({ [gameId]: id }, data, {
|
||||
new: true,
|
||||
runValidators: true,
|
||||
})
|
||||
|
||||
res.status(200).json({
|
||||
success: true,
|
||||
data: game,
|
||||
})
|
||||
})
|
||||
|
||||
/**
|
||||
* gameController.remove()
|
||||
*/
|
||||
export const remove = asyncHandler(async (req, res, next) => {
|
||||
const { id } = req.params
|
||||
const gameId =
|
||||
id === id.match(checkForTwelveRegExp) || id.match(checkForHexRegExp)
|
||||
? '_id'
|
||||
: 'steamId'
|
||||
|
||||
await Game.findOneAndDelete({ [gameId]: id })
|
||||
res.status(200).json({ success: true, data: {} })
|
||||
})
|
Reference in New Issue
Block a user