From 66405a414e9a586d7914434a387b5e34b40e713f Mon Sep 17 00:00:00 2001 From: MurakawaTakuya Date: Sun, 12 Jan 2025 00:54:32 +0900 Subject: [PATCH] =?UTF-8?q?=E7=9B=AE=E6=A8=99=E3=82=92=E5=AE=8C=E4=BA=86?= =?UTF-8?q?=E3=81=97=E3=81=9F=E6=99=82=E3=81=ABtasks=E3=82=92=E5=89=8A?= =?UTF-8?q?=E9=99=A4=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- functions/.eslintrc.js | 1 - functions/package-lock.json | 44 ++++++++++++++++++------------------- functions/package.json | 10 ++++----- functions/src/tasks.ts | 11 ++++++++-- 4 files changed, 36 insertions(+), 30 deletions(-) diff --git a/functions/.eslintrc.js b/functions/.eslintrc.js index aabd20ea..0c6395a6 100644 --- a/functions/.eslintrc.js +++ b/functions/.eslintrc.js @@ -17,7 +17,6 @@ module.exports = { parserOptions: { project: [ "tsconfig.json", - "tsconfig.functions.json", "functions/tsconfig.json", "functions/tsconfig.functions.json", ], diff --git a/functions/package-lock.json b/functions/package-lock.json index a27024e4..ff1a32a0 100644 --- a/functions/package-lock.json +++ b/functions/package-lock.json @@ -6,25 +6,25 @@ "": { "name": "functions", "dependencies": { - "@google-cloud/tasks": "^5.5.1", + "@google-cloud/tasks": "^5.5.2", "@types/multer": "^1.4.12", "express": "^4.21.2", - "express-rate-limit": "^7.4.1", + "express-rate-limit": "^7.5.0", "firebase-admin": "^12.7.0", - "firebase-functions": "^6.1.1", + "firebase-functions": "^6.2.0", "helmet": "^8.0.0", "multer": "^1.4.5-lts.1" }, "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.12.0", "@typescript-eslint/parser": "^5.12.0", - "concurrently": "^9.1.0", + "concurrently": "^9.1.2", "eslint": "^8.57.1", "eslint-config-google": "^0.14.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-import": "^2.25.4", "eslint-plugin-unused-imports": "^4.1.4", - "firebase-functions-test": "^3.1.0", + "firebase-functions-test": "^3.4.0", "typescript": "^4.9.0" }, "engines": { @@ -842,9 +842,9 @@ } }, "node_modules/@google-cloud/tasks": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@google-cloud/tasks/-/tasks-5.5.1.tgz", - "integrity": "sha512-kl6o5x9txw9hjiG0UqfWjusAw423s/JqBYgUGVhtb0Cv3KfVWub5yxHh2jkb15e6vnkKkYeoG67SsWu8dhs/nw==", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@google-cloud/tasks/-/tasks-5.5.2.tgz", + "integrity": "sha512-F934h4rI3OLlEVgzthDzE5RDQqT2brlq+BeD15eHNBi4sGMTdaz/b4y3eMFxJvB2hZk5mEKlLnsb9Pt2EcmNSQ==", "license": "Apache-2.0", "dependencies": { "google-gax": "^4.0.4" @@ -2967,9 +2967,9 @@ } }, "node_modules/concurrently": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.1.0.tgz", - "integrity": "sha512-VxkzwMAn4LP7WyMnJNbHN5mKV9L2IbyDjpzemKr99sXNR3GqRNMMHdm7prV1ws9wg7ETj6WUkNOigZVsptwbgg==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.1.2.tgz", + "integrity": "sha512-H9MWcoPsYddwbOGM6difjVwVZHl63nwMEwDJG/L7VGtuaJhb12h2caPG2tVPWs7emuYix252iGfqOyrz1GczTQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4062,9 +4062,9 @@ } }, "node_modules/express-rate-limit": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.4.1.tgz", - "integrity": "sha512-KS3efpnpIDVIXopMc65EMbWbUht7qvTCdtCR2dD/IZmi9MIkopYESwyRqLgv8Pfu589+KqDqOdzJWW7AHoACeg==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.0.tgz", + "integrity": "sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==", "license": "MIT", "engines": { "node": ">= 16" @@ -4073,7 +4073,7 @@ "url": "https://github.com/sponsors/express-rate-limit" }, "peerDependencies": { - "express": "4 || 5 || ^5.0.0-beta.1" + "express": "^4.11 || 5 || ^5.0.0-beta.1" } }, "node_modules/express/node_modules/debug": { @@ -4314,9 +4314,9 @@ } }, "node_modules/firebase-functions": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/firebase-functions/-/firebase-functions-6.1.1.tgz", - "integrity": "sha512-q+4zsQhX04YJUz6hqaiH/j5kixljPj0PMxkm8KN3juYp3I4NC6CZ4qfy5JRfwvV8VfXM2KkJrZuyJtLyZr97aw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/firebase-functions/-/firebase-functions-6.2.0.tgz", + "integrity": "sha512-vfyyVHS8elxplzEQ9To+NaINRPFUsDasQrasTa2eFJBYSPzdhkw6rwLmvwyYw622+ze+g4sDIb14VZym+afqXQ==", "license": "MIT", "dependencies": { "@types/cors": "^2.8.5", @@ -4336,9 +4336,9 @@ } }, "node_modules/firebase-functions-test": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/firebase-functions-test/-/firebase-functions-test-3.3.0.tgz", - "integrity": "sha512-X+OOA34MGrsTimFXTDnWT0psAqnmBkJ85bGCoLMwjgei5Prfkqh3bv5QASnXC/cmIVBSF2Qw9uW1+mF/t3kFlw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/firebase-functions-test/-/firebase-functions-test-3.4.0.tgz", + "integrity": "sha512-ignkiegIvGtCbDZFEKerLrzrKGonCHD/VJsuNhcfz3jDfhP9yN7mJeq7AHXz8cOJaAnBnJ0WxHj3xezem2dEbw==", "dev": true, "license": "MIT", "dependencies": { @@ -4350,7 +4350,7 @@ "node": ">=14.0.0" }, "peerDependencies": { - "firebase-admin": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0", + "firebase-admin": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0", "firebase-functions": ">=4.9.0", "jest": ">=28.0.0" } diff --git a/functions/package.json b/functions/package.json index d9e1ee2c..dc2137b0 100644 --- a/functions/package.json +++ b/functions/package.json @@ -16,25 +16,25 @@ }, "main": "lib/index.js", "dependencies": { - "@google-cloud/tasks": "^5.5.1", + "@google-cloud/tasks": "^5.5.2", "@types/multer": "^1.4.12", "express": "^4.21.2", - "express-rate-limit": "^7.4.1", + "express-rate-limit": "^7.5.0", "firebase-admin": "^12.7.0", - "firebase-functions": "^6.1.1", + "firebase-functions": "^6.2.0", "helmet": "^8.0.0", "multer": "^1.4.5-lts.1" }, "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.12.0", "@typescript-eslint/parser": "^5.12.0", - "concurrently": "^9.1.0", + "concurrently": "^9.1.2", "eslint": "^8.57.1", "eslint-config-google": "^0.14.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-import": "^2.25.4", "eslint-plugin-unused-imports": "^4.1.4", - "firebase-functions-test": "^3.1.0", + "firebase-functions-test": "^3.4.0", "typescript": "^4.9.0" }, "private": true diff --git a/functions/src/tasks.ts b/functions/src/tasks.ts index 9b1b185b..1456dc26 100644 --- a/functions/src/tasks.ts +++ b/functions/src/tasks.ts @@ -4,6 +4,7 @@ import { logger } from "firebase-functions"; import { onDocumentCreated, onDocumentDeleted, + onDocumentUpdated, } from "firebase-functions/v2/firestore"; const tasksClient = new CloudTasksClient(); @@ -67,6 +68,7 @@ export const createTasksOnGoalCreate = onDocumentCreated( } ); +// 目標を削除した時にtasksから通知予定を削除する export const deleteTasksOnGoalDelete = onDocumentDeleted( { region: region, document: "goal/{goalId}" }, async (event) => { @@ -96,10 +98,11 @@ export const deleteTasksOnGoalDelete = onDocumentDeleted( } ); -export const deleteTasksOnPostCreate = onDocumentCreated( +// 目標を完了した時にtasksから通知予定を削除する +export const deleteTasksOnPostCreate = onDocumentUpdated( { region: region, - document: "goal/{goalId}/posts/{postId}", + document: "goal/{goalId}", }, async (event) => { if (process.env.NODE_ENV !== "production") { @@ -116,6 +119,10 @@ export const deleteTasksOnPostCreate = onDocumentCreated( return; } + if (event.data.after.data().post !== null) { + return; + } + try { const goalId = event.params.goalId; const queuePath = tasksClient.queuePath(projectId, region, queue);