export async function removeAllRecipeIndexEntriesForArticle()

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;
	}
}