shared/database/local/setup/019-TriggerEmailLambdaAfterItemInsert.sql (29 lines of code) (raw):
CREATE OR REPLACE FUNCTION invokeEmailLambda()
RETURNS TRIGGER
LANGUAGE PLPGSQL
AS
$$
BEGIN
IF (NEW."groupMentions" IS NOT NULL AND NEW."groupMentions" != '{}')
OR (NEW."mentions" IS NOT NULL AND NEW."mentions" != '{}') THEN
PERFORM * FROM aws_lambda.invoke(
aws_commons.create_lambda_function_arn(
'$lambdaFunctionName',
'$awsRegion'
),
json_build_object(
'itemId', NEW."id",
'maybeRelatedItemId', NEW."relatedItemId"
)::json,
'Event' --asynchronous invocation
);
END IF;
RETURN NULL;
END
$$;
DROP TRIGGER IF EXISTS "$triggerName" ON "Item";
CREATE TRIGGER "$triggerName"
AFTER INSERT
ON "Item"
FOR EACH ROW
EXECUTE FUNCTION invokeEmailLambda();