5f074206de
* Backfill and forward fill contracts with group info * No nested queries :( * Fix filter * Pass empty arrays instead of undefined
37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import * as functions from 'firebase-functions'
|
|
import * as admin from 'firebase-admin'
|
|
|
|
import { Group } from 'common/group'
|
|
import { Contract } from 'common/contract'
|
|
|
|
const firestore = admin.firestore()
|
|
|
|
export const onDeleteGroup = functions.firestore
|
|
.document('groups/{groupId}')
|
|
.onDelete(async (change) => {
|
|
const group = change.data() as Group
|
|
|
|
// get all contracts with this group's slug
|
|
const contracts = await firestore
|
|
.collection('contracts')
|
|
.where('groupSlugs', 'array-contains', group.slug)
|
|
.get()
|
|
console.log("contracts with group's slug:", contracts)
|
|
|
|
for (const doc of contracts.docs) {
|
|
const contract = doc.data() as Contract
|
|
const newGroupLinks = contract.groupLinks?.filter(
|
|
(link) => link.slug !== group.slug
|
|
)
|
|
|
|
// remove the group from the contract
|
|
await firestore
|
|
.collection('contracts')
|
|
.doc(contract.id)
|
|
.update({
|
|
groupSlugs: contract.groupSlugs?.filter((s) => s !== group.slug),
|
|
groupLinks: newGroupLinks ?? [],
|
|
})
|
|
}
|
|
})
|