CREATE
OR
ALTER PROCEDURE dbo.USP_InvalidateUserCredential(
    @UserAccountId_ UNIQUEIDENTIFIER
    )
    AS
BEGIN
    SET
NOCOUNT ON;
    SET
XACT_ABORT ON;

BEGIN
TRANSACTION;

EXEC dbo.USP_GetUserAccountByID @UserAccountId = @UserAccountId_;
    IF
@@ROWCOUNT = 0
        THROW 50001, 'User account not found', 1;

    -- invalidate all other credentials by setting them to revoked
UPDATE dbo.UserCredential
SET IsRevoked = 1,
    RevokedAt = GETDATE()
WHERE UserAccountId = @UserAccountId_
  AND IsRevoked != 1;


COMMIT TRANSACTION;
END;