42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
const admin = require("firebase-admin");
|
|
const { onDocumentWritten } = require("firebase-functions/firestore");
|
|
const { refList } = require("../index");
|
|
const { getSunoTimestamps } = require("./lyrics");
|
|
const { deleteFolder } = require("../helpers/firebase");
|
|
|
|
exports.onProjectUpdate = onDocumentWritten(
|
|
"projects/{projectId}",
|
|
async (projectSnap) => {
|
|
try {
|
|
const { projectId } = projectSnap.params;
|
|
|
|
const currentData = projectSnap?.data?.after?.data() || null;
|
|
const previousData = projectSnap?.data?.before?.data() || null;
|
|
|
|
if (!previousData?.songUrl && currentData?.songUrl) {
|
|
await getSunoTimestamps(projectId);
|
|
}
|
|
|
|
if (!currentData) {
|
|
const { userId } = previousData || {};
|
|
|
|
//delete folder
|
|
await deleteFolder(`users/${userId}/projects/${projectId}/`);
|
|
|
|
//delete tasks
|
|
const snapshot = await refList.tasks
|
|
.where("projectId", "==", projectId)
|
|
.get();
|
|
if (snapshot.empty) return null;
|
|
const batch = admin.firestore().batch();
|
|
snapshot.forEach((doc) => {
|
|
batch.delete(doc.ref);
|
|
});
|
|
await batch.commit();
|
|
}
|
|
} catch (e) {
|
|
console.log(e);
|
|
}
|
|
}
|
|
);
|