Skip to content

Instantly share code, notes, and snippets.

View DennisAlund's full-sized avatar
💭
ngoding

Dennis Alund DennisAlund

💭
ngoding
View GitHub Profile
export const cronEndpoint = functions.https.onRequest((request, response) => {
if (functions.config().cron.apikey !== request.body.key) {
response.status(401).send("I'm sorry Dave, I'm afraid I can't do that");
return;
}
response.status(200).send("The time is now.");
});
export const countReviews = functions.firestore.document("movies/{movieId}/reviews/{reviewId}").onCreate(async (event) => {
console.log(`Got a ${event.data.data().stars} star review`);
const review = event.data.data();
admin.database().ref("movieRevies").child(event.params.movieId).transaction(movie => {
if (!movie) {
return movie;
}
export const createMovieReviewAggregate = functions.firestore.document("movies/{movieId}").onCreate(event => {
return admin.database().ref("movieRevies").child(event.params.movieId).set({
numReviews: 0,
totalReviewScore: 0,
averageScore: 0
});
});
export const countReviews = functions.firestore.document("movies/{movieId}/reviews/{reviewId}").onCreate(async (event) => {
console.log(`Got a ${event.data.data().stars} star review`);
const review = event.data.data();
const movieRef = admin.firestore().collection("movies").doc(event.params.movieId);
admin.firestore().runTransaction(async transaction => {
const movie = (await transaction.get(movieRef)).data();
movie.numReviews += 1;
export const countReviews = functions.firestore.document("movies/{movieId}/reviews/{reviewId}").onCreate(async (event) => {
console.log(`Got a ${event.data.data().stars} star review`);
const review = event.data.data();
const movieRef = admin.firestore().collection("movies").doc(event.params.movieId);
const movie = (await movieRef.get()).data();
movie.numReviews += 1;
movie.totalReviewScore += review.stars;
movie.averageScore = (movie.totalReviewScore/movie.numReviews).toPrecision(3);
const numReviews = 20;
const promises = [];
for (let i = 0; i < numReviews; i++) {
const numStars = Math.trunc(Math.random() * 5) + 1;
console.log(`#${i} creating a ${numStars} star review.`);
promises.push(admin.firestore().collection("movies").doc("tt0081748").collection("reviews").add({
name: `Jane Deer #${i}`,
stars: numStars,
comment: "Meh"
}));
export const countReviews = functions.firestore.document("movies/{movieId}/reviews/{reviewId}").onCreate(async (event) => {
console.log(`Got a ${event.data.data().stars} star review`);
const review = event.data.data();
const movieRef = admin.firestore().collection("movies").doc(event.params.movieId);
const movie = (await movieRef.get()).data();
const newNumReviews = movie.numReviews + 1;
const newTotalScore = movie.totalReviewScore + review.stars;
.test_lab_template: &test_lab_template_def
stage: test
before_script:
# Install Google Cloud SDK
- wget --quiet --output-document=/tmp/google-cloud-sdk.tar.gz https://dl.google.com/dl/cloudsdk/channels/rapid/google-cloud-sdk.tar.gz
- mkdir -p /opt
- tar zxf /tmp/google-cloud-sdk.tar.gz --directory /opt
- /opt/google-cloud-sdk/install.sh --quiet
- source /opt/google-cloud-sdk/path.bash.inc
@DennisAlund
DennisAlund / .gitlab-ci.yml
Last active November 1, 2020 17:53
Gitlab CI script for Medium article: https://medium.com/evenbit/e51aba6ba53e
image: openjdk:8-jdk
stages:
- build
- test
- package
####################################################################################################
# BUILD
.package_template: &package_template_def
before_script:
- export VERSION_NAME=`egrep '^[[:blank:]]+versionName[[:blank:]]' app/build.gradle | awk '{print $2}' | sed s/\"//g`
- export VERSION_CODE=`egrep '^[[:blank:]]+versionCode[[:blank:]]' app/build.gradle | awk '{print $2}'`
- mkdir -p deliverables
# Store some information about the build
- touch ./deliverables/info.txt
- echo "Build date $(date)" >> ./deliverables/info.txt
- echo "App version name ${VERSION_NAME}" >> ./deliverables/info.txt