Files
musicland/functions/src/users.js
T
2025-10-01 15:29:24 +02:00

37 lines
1.1 KiB
JavaScript

const admin = require("firebase-admin");
const { onDocumentDeleted } = require("firebase-functions/firestore");
const { refList } = require("../index");
const { deleteFolder } = require("../helpers/firebase");
exports.onUserDelete = onDocumentDeleted("users/{userID}", async (event) => {
try {
const userID = event?.params?.userID;
await clearAllUserData(userID);
await deleteFolder(`users/${userID}/`);
await admin.auth().deleteUser(userID);
console.log(`User ${userID} deleted successfully`);
} catch (e) {
console.log(e);
}
});
async function clearAllUserData(userID) {
const deleteAll = async (ref, key, operator = "==") => {
const snapshot = await ref.where(key, operator, userID).get();
snapshot.forEach((item) => item.ref.delete());
};
const removeFromArray = async (ref, arrayName) => {
const snapshot = await ref.where(arrayName, "array-contains", userID).get();
snapshot.forEach((item) =>
item.ref.update({
[arrayName]: admin.firestore.FieldValue.arrayRemove(userID),
}),
);
};
await deleteAll(refList.projects, "userId");
await deleteAll(refList.playlists, "createdBy");
}