43 lines
1.1 KiB
JavaScript
43 lines
1.1 KiB
JavaScript
const { PrismaClient } = require('@prisma/client')
|
|
const redis = require('../utils/redis.js')
|
|
const prisma = new PrismaClient()
|
|
|
|
exports.getReports = async (req, res) => {
|
|
let json
|
|
const cached = await redis.get('transparency')
|
|
|
|
if (cached) {
|
|
json = JSON.parse(cached)
|
|
} else {
|
|
json = (await prisma.reports.findMany()).map(r => {
|
|
return {
|
|
...r,
|
|
details: (r.details).split('<').join('<').split('>').join('>'),
|
|
date: (r.date).toISOString().slice(0,10)
|
|
}
|
|
})
|
|
await redis.set('transparency', JSON.stringify(json), 'EX', 3600)
|
|
}
|
|
|
|
res.json(json)
|
|
}
|
|
|
|
exports.getReport = async (req, res) => {
|
|
const data = await prisma.reports.findFirst({
|
|
where: {
|
|
target: req.params.id
|
|
}
|
|
})
|
|
|
|
if (!data) {
|
|
res.json({
|
|
error: '404'
|
|
})
|
|
} else {
|
|
res.json({
|
|
...data,
|
|
details: (data.details).split('<').join('<').split('>').join('>'),
|
|
date: (data.date).toISOString().slice(0,10)
|
|
})
|
|
}
|
|
} |