61 lines
1.7 KiB
JavaScript
61 lines
1.7 KiB
JavaScript
/* eslint-disable promise/no-nesting */
|
|
const admin = require("firebase-admin");
|
|
const Logger = require("../Logger");
|
|
const mLogger = new Logger("admin", "partyDashboard");
|
|
|
|
module.exports = async (req, res) => {
|
|
mLogger.start();
|
|
|
|
var partyData = await admin
|
|
.firestore()
|
|
.collection("rooms")
|
|
.get()
|
|
.then((roomSnapshot) => {
|
|
const docData = [];
|
|
roomSnapshot.docs.forEach((doc) => {
|
|
docData.push({
|
|
id: doc.id,
|
|
createTime: doc.createTime.toDate().toUTCString(),
|
|
updateTime: doc.updateTime.toDate().toUTCString(),
|
|
source: doc.data().player.source,
|
|
onCall: doc.data().hasOwnProperty("conference"),
|
|
showName: doc.data().player.showName || "",
|
|
time: doc.data().player.time || 0,
|
|
status: doc.data().player.status || "",
|
|
});
|
|
});
|
|
return docData;
|
|
})
|
|
.catch((err) => {
|
|
mLogger.error("FAILED TO RESOLVE PARTIES", err);
|
|
res
|
|
.status(500)
|
|
.send({ message: "Unable to get all parties", error: err });
|
|
});
|
|
|
|
const p = await partyData.map(async (party) => {
|
|
const messageCount = await admin
|
|
.firestore()
|
|
.collection("rooms")
|
|
.doc(party.id)
|
|
.collection("messages")
|
|
.get()
|
|
.then((snap) => snap.size);
|
|
const userCount = await admin
|
|
.firestore()
|
|
.collection("rooms")
|
|
.doc(party.id)
|
|
.collection("users")
|
|
.get()
|
|
.then((snap) => snap.size);
|
|
party.messageCount = messageCount || 0;
|
|
party.userCount = userCount || 0;
|
|
return party;
|
|
});
|
|
|
|
return Promise.all(p).then((v) => {
|
|
mLogger.success("GOT ALL PARTIES", { parties: partyData.length });
|
|
return res.status(200).send({ partyData });
|
|
});
|
|
};
|