mirror of
https://github.com/anatolykopyl/vk-bingo.git
synced 2026-03-26 12:54:25 +00:00
🚑️ Wait for client connect
This commit is contained in:
@@ -21,7 +21,12 @@ const names = require('./names.json');
|
|||||||
|
|
||||||
const client = new MongoClient(process.env.URI, { useUnifiedTopology: true });
|
const client = new MongoClient(process.env.URI, { useUnifiedTopology: true });
|
||||||
|
|
||||||
app.use(session({
|
(async () => {
|
||||||
|
await client.connect();
|
||||||
|
const cardsCollection = client.db(process.env.DB_NAME).collection('cards');
|
||||||
|
const answersCollection = client.db(process.env.DB_NAME).collection('answers');
|
||||||
|
|
||||||
|
app.use(session({
|
||||||
secret: process.env.SECRET,
|
secret: process.env.SECRET,
|
||||||
resave: false,
|
resave: false,
|
||||||
saveUninitialized: true,
|
saveUninitialized: true,
|
||||||
@@ -33,15 +38,12 @@ app.use(session({
|
|||||||
secure: false,
|
secure: false,
|
||||||
maxAge: 1000 * 60 * 60 * 24,
|
maxAge: 1000 * 60 * 60 * 24,
|
||||||
},
|
},
|
||||||
}));
|
}));
|
||||||
|
|
||||||
client.connect();
|
// Выравнивание вероятности
|
||||||
const cardsCollection = client.db(process.env.DB_NAME).collection('cards');
|
// Объект хранящий вероятности с которой карта каждого участника отбрасывается
|
||||||
const answersCollection = client.db(process.env.DB_NAME).collection('answers');
|
const dropProb = {};
|
||||||
|
cardsCollection.aggregate([
|
||||||
// Выравнивание вероятности
|
|
||||||
const dropProb = {}; // Объект хранящий вероятности с которой карта каждого участника отбрасывается
|
|
||||||
cardsCollection.aggregate([
|
|
||||||
{
|
{
|
||||||
$group: {
|
$group: {
|
||||||
_id: '$name',
|
_id: '$name',
|
||||||
@@ -50,7 +52,7 @@ cardsCollection.aggregate([
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
]).toArray().then((memeCount) => {
|
]).toArray().then((memeCount) => {
|
||||||
cardsCollection.countDocuments().then((totalCount) => {
|
cardsCollection.countDocuments().then((totalCount) => {
|
||||||
let quotaTimes;
|
let quotaTimes;
|
||||||
|
|
||||||
@@ -77,9 +79,9 @@ cardsCollection.aggregate([
|
|||||||
console.log(`${person._id} [${person.count}]: ${dropProb[person._id]}`);
|
console.log(`${person._id} [${person.count}]: ${dropProb[person._id]}`);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
app.post('/api/auth', async (req, res) => {
|
app.post('/api/auth', async (req, res) => {
|
||||||
if (req.session.loggedIn) {
|
if (req.session.loggedIn) {
|
||||||
res.status(200).send('Logged in');
|
res.status(200).send('Logged in');
|
||||||
} else {
|
} else {
|
||||||
@@ -96,9 +98,9 @@ app.post('/api/auth', async (req, res) => {
|
|||||||
res.status(500).send();
|
res.status(500).send();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get('/api/card', async (req, res) => {
|
app.get('/api/card', async (req, res) => {
|
||||||
async function drawCard() {
|
async function drawCard() {
|
||||||
let card;
|
let card;
|
||||||
// Тянем карты и отбрасываем их в соответствии с их вероятностью отбрасывания
|
// Тянем карты и отбрасываем их в соответствии с их вероятностью отбрасывания
|
||||||
@@ -122,9 +124,9 @@ app.get('/api/card', async (req, res) => {
|
|||||||
} else {
|
} else {
|
||||||
res.status(403).send();
|
res.status(403).send();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get('/api/meme', async (req, res) => {
|
app.get('/api/meme', async (req, res) => {
|
||||||
const amount = Number(req.query.amount) || 1;
|
const amount = Number(req.query.amount) || 1;
|
||||||
try {
|
try {
|
||||||
let cards = await cardsCollection.aggregate([{ $sample: { size: amount } }]).toArray();
|
let cards = await cardsCollection.aggregate([{ $sample: { size: amount } }]).toArray();
|
||||||
@@ -135,9 +137,9 @@ app.get('/api/meme', async (req, res) => {
|
|||||||
console.log(`Error: ${e}`);
|
console.log(`Error: ${e}`);
|
||||||
res.status(500).send();
|
res.status(500).send();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
app.post('/api/answer', async (req, res) => {
|
app.post('/api/answer', async (req, res) => {
|
||||||
if (req.session.loggedIn) {
|
if (req.session.loggedIn) {
|
||||||
if (req.body.data.id && req.body.data.name) {
|
if (req.body.data.id && req.body.data.name) {
|
||||||
const card = await cardsCollection.findOne({ _id: ObjectId(req.body.data.id) });
|
const card = await cardsCollection.findOne({ _id: ObjectId(req.body.data.id) });
|
||||||
@@ -165,9 +167,9 @@ app.post('/api/answer', async (req, res) => {
|
|||||||
} else {
|
} else {
|
||||||
res.status(403).send();
|
res.status(403).send();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get('/api/score', (req, res) => {
|
app.get('/api/score', (req, res) => {
|
||||||
if (req.session.loggedIn) {
|
if (req.session.loggedIn) {
|
||||||
req.session.right = req.session.right || 0;
|
req.session.right = req.session.right || 0;
|
||||||
req.session.wrong = req.session.wrong || 0;
|
req.session.wrong = req.session.wrong || 0;
|
||||||
@@ -179,9 +181,9 @@ app.get('/api/score', (req, res) => {
|
|||||||
} else {
|
} else {
|
||||||
res.status(403).send();
|
res.status(403).send();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get('/api/stats', async (req, res) => {
|
app.get('/api/stats', async (req, res) => {
|
||||||
if (req.session.loggedIn) {
|
if (req.session.loggedIn) {
|
||||||
answersCollection.aggregate([
|
answersCollection.aggregate([
|
||||||
{
|
{
|
||||||
@@ -207,14 +209,15 @@ app.get('/api/stats', async (req, res) => {
|
|||||||
} else {
|
} else {
|
||||||
res.status(403).send();
|
res.status(403).send();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get('/api/options', async (req, res) => {
|
app.get('/api/options', async (req, res) => {
|
||||||
if (req.session.loggedIn) {
|
if (req.session.loggedIn) {
|
||||||
res.status(200).send(names);
|
res.status(200).send(names);
|
||||||
} else {
|
} else {
|
||||||
res.status(403).send();
|
res.status(403).send();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
app.listen(process.env.PORT, () => console.log(`Server started on ${process.env.PORT}`));
|
app.listen(process.env.PORT, () => console.log(`Server started on ${process.env.PORT}`));
|
||||||
|
})();
|
||||||
|
|||||||
Reference in New Issue
Block a user