Api files no longer return router, exports usable functions.

This commit is contained in:
2020-08-27 00:31:01 +02:00
parent ec80aa8bcc
commit a6a84e4b29
4 changed files with 71 additions and 71 deletions

View File

@@ -1,21 +1,13 @@
const express = require('express');
const path = require('path'); const path = require('path');
const router = express.Router();
const mongoose = require('mongoose'); const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/vinlottis', { mongoose.connect('mongodb://localhost:27017/vinlottis', {
useNewUrlParser: true useNewUrlParser: true
}) })
const mustBeAuthenticated = require(path.join(
__dirname + '/../middleware/mustBeAuthenticated'
));
const config = require(path.join(__dirname + '/../config/defaults/lottery'));
const Highscore = require(path.join(__dirname + '/../schemas/Highscore')); const Highscore = require(path.join(__dirname + '/../schemas/Highscore'));
const Wine = require(path.join(__dirname + '/../schemas/Wine')); const Wine = require(path.join(__dirname + '/../schemas/Wine'));
// Utils // Utils
const epochToDateString = date => new Date(parseInt(date)).toDateString(); const epochToDateString = date => new Date(parseInt(date)).toDateString();
@@ -62,7 +54,7 @@ const resolveWineReferences = listWithWines => {
} }
// Routes // Routes
router.route('/all').get((req, res) => { const all = (req, res) => {
return Highscore.find() return Highscore.find()
.then(highscore => getHighscoreByDates(highscore)) .then(highscore => getHighscoreByDates(highscore))
.then(groupedLotteries => groupedHighscoreToSortedList(groupedLotteries)) .then(groupedLotteries => groupedHighscoreToSortedList(groupedLotteries))
@@ -70,9 +62,19 @@ router.route('/all').get((req, res) => {
message: "Lotteries by date!", message: "Lotteries by date!",
lotteries lotteries
})) }))
}) }
router.route('/by-date/:date').get((req, res) => { const latest = (req, res) => {
return Highscore.find()
.then(highscore => getHighscoreByDates(highscore))
.then(groupedLotteries => groupedHighscoreToSortedList(groupedLotteries))
.then(lotteries => res.send({
message: "Latest lottery!",
lottery: lotteries.slice(-1).pop()
}))
}
const byEpochDate = (req, res) => {
const { date } = req.params; const { date } = req.params;
const dateString = epochToDateString(date); const dateString = epochToDateString(date);
@@ -92,10 +94,10 @@ router.route('/by-date/:date').get((req, res) => {
}) })
} }
}) })
}) }
router.route("/by-name").get((req, res) => { const byName = (req, res) => {
const { name } = req.query; const { name } = req.params;
return Highscore.find({ name }) return Highscore.find({ name })
.then(async (highscore) => { .then(async (highscore) => {
@@ -113,6 +115,11 @@ router.route("/by-name").get((req, res) => {
}) })
} }
}) })
}) }
module.exports = router; module.exports = {
all,
latest,
byEpochDate,
byName
};

View File

@@ -13,23 +13,19 @@ const PreLotteryWine = require(path.join(
__dirname + "/../schemas/PreLotteryWine" __dirname + "/../schemas/PreLotteryWine"
)); ));
router.use((req, res, next) => { const prelotteryWines = async (req, res) => {
next();
});
router.route("/wines/prelottery").get(async (req, res) => {
let wines = await PreLotteryWine.find(); let wines = await PreLotteryWine.find();
res.json(wines); return res.json(wines);
}); };
router.route("/purchase/statistics").get(async (req, res) => { const allPurchase = async (req, res) => {
let purchases = await Purchase.find() let purchases = await Purchase.find()
.populate("wines") .populate("wines")
.sort({ date: 1 }); .sort({ date: 1 });
res.json(purchases); return res.json(purchases);
}); };
router.route("/purchase/statistics/color").get(async (req, res) => { const purchaseByColor = async (req, res) => {
const countColor = await Purchase.find(); const countColor = await Purchase.find();
let red = 0; let red = 0;
let blue = 0; let blue = 0;
@@ -75,7 +71,7 @@ router.route("/purchase/statistics/color").get(async (req, res) => {
const total = red + yellow + blue + green; const total = red + yellow + blue + green;
res.json({ return res.json({
red: { red: {
total: red, total: red,
win: redWin win: redWin
@@ -95,21 +91,21 @@ router.route("/purchase/statistics/color").get(async (req, res) => {
stolen: stolen, stolen: stolen,
total: total total: total
}); });
}); };
router.route("/highscore/statistics").get(async (req, res) => { const highscore = async (req, res) => {
const highscore = await Highscore.find().populate("wins.wine"); const highscore = await Highscore.find().populate("wins.wine");
res.json(highscore); return res.json(highscore);
}); };
router.route("/wines/statistics").get(async (req, res) => { const allWines = async (req, res) => {
const wines = await Wine.find(); const wines = await Wine.find();
res.json(wines); return res.json(wines);
}); };
router.route("/wines/statistics/overall").get(async (req, res) => { const allWinesSummary = async (req, res) => {
const highscore = await Highscore.find().populate("wins.wine"); const highscore = await Highscore.find().populate("wins.wine");
let wines = {}; let wines = {};
@@ -149,7 +145,14 @@ router.route("/wines/statistics/overall").get(async (req, res) => {
} }
} }
res.json(Object.values(wines)); return res.json(Object.values(wines));
}); };
module.exports = router; module.exports = {
prelotteryWines,
allPurchase,
purchaseByColor,
highscore,
allWines,
allWinesSummary
};

View File

@@ -1,15 +1,11 @@
const express = require("express"); const express = require("express");
const path = require("path"); const path = require("path");
const router = express.Router();
const mongoose = require("mongoose"); const mongoose = require("mongoose");
mongoose.connect("mongodb://localhost:27017/vinlottis", { mongoose.connect("mongodb://localhost:27017/vinlottis", {
useNewUrlParser: true useNewUrlParser: true
}); });
const sub = require(path.join(__dirname + "/../api/subscriptions")); const sub = require(path.join(__dirname + "/../api/subscriptions"));
const mustBeAuthenticated = require(path.join(
__dirname + "/../middleware/mustBeAuthenticated"
));
const _wineFunctions = require(path.join(__dirname + "/../api/wine")); const _wineFunctions = require(path.join(__dirname + "/../api/wine"));
const _personFunctions = require(path.join(__dirname + "/../api/person")); const _personFunctions = require(path.join(__dirname + "/../api/person"));
@@ -19,11 +15,7 @@ const PreLotteryWine = require(path.join(
__dirname + "/../schemas/PreLotteryWine" __dirname + "/../schemas/PreLotteryWine"
)); ));
router.use((req, res, next) => { const submitWines = async (req, res) => {
next();
});
router.route("/log/wines").post(mustBeAuthenticated, async (req, res) => {
const wines = req.body; const wines = req.body;
for (let i = 0; i < wines.length; i++) { for (let i = 0; i < wines.length; i++) {
let wine = wines[i]; let wine = wines[i];
@@ -50,20 +42,20 @@ router.route("/log/wines").post(mustBeAuthenticated, async (req, res) => {
sub.sendNotification(subscription, message); sub.sendNotification(subscription, message);
} }
res.send(true); return res.send(true);
}); };
router.route("/log/schema").get(mustBeAuthenticated, async (req, res) => { const schema = async (req, res) => {
let schema = { ...PreLotteryWine.schema.obj }; let schema = { ...PreLotteryWine.schema.obj };
let nulledSchema = Object.keys(schema).reduce((accumulator, current) => { let nulledSchema = Object.keys(schema).reduce((accumulator, current) => {
accumulator[current] = ""; accumulator[current] = "";
return accumulator; return accumulator
}, {}); }, {});
res.send(nulledSchema); return res.send(nulledSchema);
}); }
router.route("/log").post(mustBeAuthenticated, async (req, res) => { const submitLottery = async (req, res) => {
await PreLotteryWine.deleteMany(); await PreLotteryWine.deleteMany();
const purchaseBody = req.body.purchase; const purchaseBody = req.body.purchase;
@@ -102,7 +94,11 @@ router.route("/log").post(mustBeAuthenticated, async (req, res) => {
await purchase.save(); await purchase.save();
res.send(true); return res.send(true);
}); };
module.exports = router; module.exports = {
submitWines,
schema,
submitLottery
};

View File

@@ -1,15 +1,7 @@
const express = require("express");
const path = require("path");
const router = express.Router();
const fetch = require('node-fetch') const fetch = require('node-fetch')
const path = require('path')
const mustBeAuthenticated = require(path.join(__dirname + "/../middleware/mustBeAuthenticated")) const byEAN = async (req, res) => {
router.use((req, res, next) => {
next();
});
router.route("/wineinfo/:ean").get(async (req, res) => {
const vinmonopoletResponse = await fetch("https://app.vinmonopolet.no/vmpws/v2/vmp/products/barCodeSearch/" + req.params.ean) const vinmonopoletResponse = await fetch("https://app.vinmonopolet.no/vmpws/v2/vmp/products/barCodeSearch/" + req.params.ean)
.then(resp => resp.json()) .then(resp => resp.json())
@@ -25,7 +17,9 @@ router.route("/wineinfo/:ean").get(async (req, res) => {
}) })
} }
res.send(vinmonopoletResponse); return res.send(vinmonopoletResponse);
}); };
module.exports = router; module.exports = {
byEAN
};