/var/www/verywell.gr/server/delivery/api/controllers
Edit: /var/www/verywell.gr/server/delivery/api/controllers/language.controller.js (2709B)
const logger = require('../../logger')({ service: 'LanguageController' })
const checkPermission = require('../utils/checkPermission.util')
const { NotFound, BadRequest } = require('../responseModels/errors')
module.exports = function ({ db }) {
this.List = async (req, res, next) => {
logger.child({ path: req.path, request: req.query }).info()
try {
const languages = await db.language.findAll()
if (!languages || languages.length == 0) {
throw new NotFound({ lang: req.user?.languageCode })
}
return res.status(200).json(
languages.map((language) => {
const { id, name, nativeName, code } = language
return { id, name, nativeName, code }
})
)
} catch (err) {
next(err)
}
}
this.Details = async (req, res, next) => {
logger.child({ path: req.path, request: req.params }).info()
try {
const { id } = req.params
const language = await db.language.findOne({
where: { id: id }
})
if (!language) {
throw new NotFound({ lang: req.user?.languageCode })
}
return res.status(200).json(language)
} catch (err) {
const { code, message, stack } = err
logger.child({ error: stack }).error(message)
return res.status(500).json({ status: 'error', code, message })
}
}
this.Create = async (req, res, next) => {
logger.child({ path: req.path, request: req.body }).info()
try {
checkPermission(req, 'language_edit')
const { name, code, nativeName } = req.body
const language = await db.language.create({
name,
code,
nativeName
})
return res.status(200).json({
status: 'success',
id: language.id
})
} catch (err) {
next(err)
}
}
this.Edit = async (req, res, next) => {
logger.child({ path: req.path, request: req.body }).info()
try {
checkPermission(req, 'language_edit')
const { id, name, code, nativeName } = req.body
const language = await db.language.findOne({
where: { id: id }
})
if (!language) {
throw new NotFound({ lang: req.user?.languageCode })
}
language.name = name
language.nativeName = nativeName
language.code = code
await language.save()
return res.status(200).json(language)
} catch (err) {
next(err)
}
}
this.Delete = async (req, res, next) => {
logger.child({ path: req.path, request: req.body }).info()
try {
checkPermission(req, 'language_edit')
const { id } = req.body
const language = await db.language.findOne({
where: { id: id }
})
if (!language) {
throw new NotFound({ lang: req.user?.languageCode })
}
await db.language.destroy({ where: { id: id } })
return res.status(200).json({ status: 'success', id: language.id })
} catch (err) {
next(err)
}
}
}