in lib/recipes-data/src/lib/dynamo.ts [122:156]
export async function removeRecipe(
canonicalArticleId: string,
recipeUID: string,
recipeChecksum?: string,
): Promise<DeleteItemCommandOutput | null> {
const ExpressionAttributeValues: Record<string, AttributeValue> = {};
if (recipeChecksum) {
ExpressionAttributeValues[':ver'] = { S: recipeChecksum };
}
const req = new DeleteItemCommand({
TableName,
Key: {
capiArticleId: { S: canonicalArticleId },
recipeUID: { S: recipeUID },
},
ConditionExpression: recipeChecksum ? `recipeVersion = :ver` : undefined,
ExpressionAttributeValues,
});
try {
return client.send(req);
} catch (err) {
if (err instanceof ConditionalCheckFailedException) {
console.log(
`INFO [${canonicalArticleId}] - not removing ${recipeUID} because version does not match ${
recipeChecksum ?? '(no version)'
}`,
);
return null;
} else {
throw err;
}
}
}