diff options
Diffstat (limited to 'api')
| -rw-r--r-- | api/routes/quotes.js | 58 | ||||
| -rw-r--r-- | api/server.js | 73 |
2 files changed, 131 insertions, 0 deletions
diff --git a/api/routes/quotes.js b/api/routes/quotes.js new file mode 100644 index 0000000..39aba7b --- /dev/null +++ b/api/routes/quotes.js @@ -0,0 +1,58 @@ +const express = require('express'); +const quoteDB = require('../../models/quote.js'); + +const router = express.Router(); + +const pendingQuote = quoteDB.pendingQuote; +const approvedQuote = quoteDB.quote; + +router.get('/pending-quotes', async (req, res) => { + try { + const quotes = await pendingQuote.findAll(); + res.json(quotes); + } catch (error) { + console.error('Error fetching quotes:', error); + res.status(500).send('Internal Server Error'); + } +}); + +router.post('/approve-quote', async (req, res) => { + const { id } = req.body; + try { + const quote = await pendingQuote.findByPk(id); + if (quote) { + await approvedQuote.create({ + author: quote.author, + authorImage: quote.authorImage, + quote: quote.quote, + year: quote.year, + submitter: quote.submitterID + }); + await pendingQuote.destroy({ where: { id } }); + res.status(200).send('Quote approved'); + } else { + res.status(404).send('Quote not found'); + } + } catch (error) { + console.error('Error approving quote:', error); + res.status(500).send('Internal Server Error'); + } +}); + +router.post('/reject-quote', async (req, res) => { + const { id } = req.body; + try { + const quote = await pendingQuote.findByPk(id); + if (quote) { + await pendingQuote.destroy({ where: { id } }); + res.status(200).send('Quote rejected'); + } else { + res.status(404).send('Quote not found'); + } + } catch (error) { + console.error('Error rejecting quote:', error); + res.status(500).send('Internal Server Error'); + } +}); + +module.exports = router; diff --git a/api/server.js b/api/server.js new file mode 100644 index 0000000..acfe528 --- /dev/null +++ b/api/server.js @@ -0,0 +1,73 @@ +const express = require('express'); +const cors = require('cors'); +const quotesRouter = require('./routes/quotes'); +require('dotenv').config() + +const app = express(); + +const apiServer = (client) => { + app.use(cors()); // Allow cross-origin requests + app.use(express.json()); + + app.use('/api', quotesRouter); + + app.get('/api/version', (req, res) => { + const { abVersion } = require('../storage/settings.json'); + res.json(abVersion); + + }); + + app.get('/api/uptime', (req, res) => { + res.json(client.uptime); + }); + + app.get('/api/servers', (req, res) => { + const guildsInfo = []; + + if (client.guilds.cache.size === 0) { + res.json({ + message: 'No servers found' + }) + } else { + client.guilds.cache.forEach((guild) => { + const guildInfo = { + name: guild.name, + members: guild.memberCount, + id: guild.id + }; + guildsInfo.push(guildInfo); + }); + } + + res.json(guildsInfo); + + }); + + app.post('/api/leave', (req, res) => { + const { id } = req.body; + let guild = client.guilds.cache.get(id); + + try { + guild.leave().then(guild => { + res.json({ + guild: guild.name, + left: true + }) + }); + + } catch (error) { + console.error('Error leaving server:', error); + res.status(500).res.json({ + guild: guild.name, + left: false + }) + } + }); + + // Start the server + app.listen(process.env.port, () => { + console.log(`Server is running on http://localhost:${process.env.port}`); + }); +}; + +module.exports = apiServer; |
