Ver Fonte

Generate daily challenge

Marcin Jaborski há 3 anos atrás
pai
commit
f480945cc3
1 ficheiros alterados com 32 adições e 0 exclusões
  1. 32 0
      serverless_functions/api/generate-daily.ts

+ 32 - 0
serverless_functions/api/generate-daily.ts

@@ -0,0 +1,32 @@
+import {VercelRequest, VercelResponse} from '@vercel/node';
+import {initializeApp, cert} from 'firebase-admin/app';
+import {getFirestore} from 'firebase-admin/firestore';
+import {firestore} from "firebase-admin";
+import Timestamp = firestore.Timestamp;
+
+
+export default async function generateDaily(req: VercelRequest, res: VercelResponse) {
+    const serviceAccount = require('./serviceAccountKey.json');
+    initializeApp({
+        credential: cert(serviceAccount)
+    })
+
+    const firestore = getFirestore();
+
+    const exercisesSnapshot = await firestore.collection('Exercises').get();
+    const exercises: FirebaseFirestore.DocumentData[] = [];
+    exercisesSnapshot.forEach((exercise) => {
+        exercises.push(firestore.collection('Exercises').doc(exercise.id));
+    });
+    const shuffled = exercises.sort(() => 0.5 - Math.random());
+    const selected = shuffled.slice(0, 3);
+    const bonus = exercises[Math.floor(Math.random() * exercises.length)];
+
+    const dailyChallengesRef = firestore.collection('DailyChallenges');
+    const firestoreRes = await dailyChallengesRef.add({
+        date: Timestamp.fromDate(new Date()),
+        list_exercises: selected,
+        bonus_exercise: bonus,
+    })
+    res.json(firestoreRes);
+}