in lib/recipes-data/src/lib/dynamo.ts [165:199]
export async function removeAllRecipeIndexEntriesForArticle(
canonicalArticleId: string,
): Promise<RecipeIndexEntry[]> {
const req = new QueryCommand({
TableName,
KeyConditionExpression: 'capiArticleId=:artId',
ExpressionAttributeValues: {
':artId': { S: canonicalArticleId },
},
});
const contentToRemove = await client.send(req);
if (contentToRemove.Count === 0 || !contentToRemove.Items) {
console.log(`No recipes to take down for article ${canonicalArticleId}`);
return [];
} else {
const entries: RecipeIndexEntry[] = contentToRemove.Items
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- dbEntry["recipeUID"] _can_ be undefined in reality
.filter((dbEntry) => !!dbEntry['recipeUID']?.S)
.map(RecipeIndexEntryFromDynamo);
const recepts: RecipeDatabaseKey[] = contentToRemove.Items
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- dbEntry["recipeUID"] _can_ be undefined in reality
.filter((dbEntry) => !!dbEntry['recipeUID']?.S)
.map((dbEntry) => ({
capiArticleId: canonicalArticleId,
recipeUID: dbEntry['recipeUID'].S as string,
}));
console.log(
`${recepts.length} recipes to remove for article ${canonicalArticleId}`,
);
await bulkRemoveRecipe(recepts);
return entries;
}
}