diff --git a/packages/server/src/controllers/PublicController/index.js b/packages/server/src/controllers/PublicController/index.js index b8c532dc..89a1c945 100644 --- a/packages/server/src/controllers/PublicController/index.js +++ b/packages/server/src/controllers/PublicController/index.js @@ -1,8 +1,28 @@ import { Controller } from "linebridge/dist/server" +import { Schematized } from "../../lib" + +import { FeaturedWallpaper } from "../../models" export default class PublicController extends Controller { static refName = "PublicController" + get = { + "/featured_wallpapers": { + fn: async (req, res) => { + const featuredWallpapers = await FeaturedWallpaper.find({}) + .sort({ date: -1 }) + .limit(10) + .catch(err => { + return res.status(500).json({ + error: err.message + }).end() + }) + + return res.json(featuredWallpapers) + } + } + } + post = { "/only_managers_test": { middlewares: ["withAuthentication", "permissions"], @@ -12,6 +32,21 @@ export default class PublicController extends Controller { assertedPermissions: req.assertedPermissions }) }, + }, + "/new_featured_wallpaper": { + middlewares: ["withAuthentication", "onlyAdmin"], + fn: Schematized({ + select: ["url", "date"], + required: ["url"], + }, async (req, res) => { + const newFeaturedWallpaper = new FeaturedWallpaper(req.selection) + + await newFeaturedWallpaper.save().catch((err) => { + return res.status(400).json({ message: err.message }) + }) + + return res.json(newFeaturedWallpaper) + }) } } } \ No newline at end of file