Skip to content

Instantly share code, notes, and snippets.

@aheuermann
Forked from anshdivu/api_handler_using_null.js
Last active March 31, 2016 01:36
Show Gist options
  • Select an option

  • Save aheuermann/0f603776db40ab087fa24741aa5d941c to your computer and use it in GitHub Desktop.

Select an option

Save aheuermann/0f603776db40ab087fa24741aa5d941c to your computer and use it in GitHub Desktop.

Revisions

  1. aheuermann revised this gist Mar 31, 2016. 1 changed file with 4 additions and 4 deletions.
    8 changes: 4 additions & 4 deletions api_handler_using_null.js
    Original file line number Diff line number Diff line change
    @@ -5,10 +5,10 @@ function checkEmail(emailAddress) {
    return facade.user.getUserByEmailAddress(emailAddress).chain(function (user) {
    if (!user) {
    return {available: true};
    } else {
    return facade.user.isUserAnInvitedTaker(user).chain(function (isInvited) {
    return isInvited ? {invited: true} : {available: false}
    });
    }

    return facade.user.isUserAnInvitedTaker(user).chain(function (isInvited) {
    return isInvited ? {invited: true} : {available: false}
    });
    }).chain(res.handler.successHandler(), res.handler.errorHandler(errors.UNKNOWN_ERROR));
    }
  2. @anshdivu anshdivu revised this gist Mar 31, 2016. No changes.
  3. @anshdivu anshdivu revised this gist Mar 31, 2016. No changes.
  4. @anshdivu anshdivu revised this gist Mar 30, 2016. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions original_file.js
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,5 @@
    // https://github.com/C2FO/c2fo/blob/develop/api/lib/registration/routes.js#L50-L62

    function checkEmail(emailAddress) {
    return facade.user.getUserByEmailAddress(emailAddress).chain(function (user) {
    if (user) {
  5. @anshdivu anshdivu revised this gist Mar 30, 2016. 1 changed file with 14 additions and 13 deletions.
    27 changes: 14 additions & 13 deletions original_file.js
    Original file line number Diff line number Diff line change
    @@ -1,14 +1,15 @@
    facade.user.getUserByEmailAddress(emailAddress).chain(function (user) {
    if (user) {
    return facade.user.isUserAnInvitedTaker(user).chain(function (isInvited) {
    if (isInvited) {
    res.handler.success({invited: true});
    }else {
    res.handler.success({available: false});
    }
    });
    } else {
    res.handler.success({available: true});
    function checkEmail(emailAddress) {
    return facade.user.getUserByEmailAddress(emailAddress).chain(function (user) {
    if (user) {
    return facade.user.isUserAnInvitedTaker(user).chain(function (isInvited) {
    if (isInvited) {
    res.handler.success({invited: true});
    }else {
    res.handler.success({available: false});
    }
    }, res.handler.errorHandler(errors.UNKNOWN_ERROR));

    });
    } else {
    res.handler.success({available: true});
    }
    }, res.handler.errorHandler(errors.UNKNOWN_ERROR));
    }
  6. @anshdivu anshdivu revised this gist Mar 30, 2016. 1 changed file with 14 additions and 0 deletions.
    14 changes: 14 additions & 0 deletions original_file.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,14 @@
    facade.user.getUserByEmailAddress(emailAddress).chain(function (user) {
    if (user) {
    return facade.user.isUserAnInvitedTaker(user).chain(function (isInvited) {
    if (isInvited) {
    res.handler.success({invited: true});
    }else {
    res.handler.success({available: false});
    }
    });
    } else {
    res.handler.success({available: true});
    }
    }, res.handler.errorHandler(errors.UNKNOWN_ERROR));

  7. @anshdivu anshdivu revised this gist Mar 30, 2016. 2 changed files with 11 additions and 11 deletions.
    6 changes: 3 additions & 3 deletions api_handler_using_null.js
    Original file line number Diff line number Diff line change
    @@ -6,9 +6,9 @@ function checkEmail(emailAddress) {
    if (!user) {
    return {available: true};
    } else {
    return facade.user.isUserAnInvitedTaker(user);
    return facade.user.isUserAnInvitedTaker(user).chain(function (isInvited) {
    return isInvited ? {invited: true} : {available: false}
    });
    }
    }).chain(function (isInvited) {
    return isInvited ? {invited: true} : {available: false}
    }).chain(res.handler.successHandler(), res.handler.errorHandler(errors.UNKNOWN_ERROR));
    }
    16 changes: 8 additions & 8 deletions api_handler_using_reject.js
    Original file line number Diff line number Diff line change
    @@ -3,14 +3,14 @@
    // disadvantage - recovering from `not found` is explicit and has to occur in reject handler
    function checkEmail(emailAddress) {
    return facade.user.getUserByEmailAddress(emailAddress).chain(function (user) {
    return facade.user.isUserAnInvitedTaker(user);
    }, function(err) {
    if (err.objectNotFound()) {
    return facade.user.isUserAnInvitedTaker(user).chain(function (isInvited) {
    return isInvited ? {invited: true} : {available: false};
    });
    }).chain(function(err) {
    if(err.objectNoFound()) {
    return {available: true};
    } else {
    return comb.rejected(errors.UNKNOWN_ERROR);
    } else {
    return comb.rejected();
    }
    }).chain(function (isInvited) {
    return isInvited ? {invited: true} : {available: false}
    }).chain(res.handler.successHandler(), res.handler.errorHandler());
    }).chain(res.handler.successHandler(), res.handler.errorHandler(errors.UNKNOWN_ERROR));
    }
  8. @anshdivu anshdivu revised this gist Mar 30, 2016. No changes.
  9. @anshdivu anshdivu revised this gist Mar 30, 2016. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion api_handler_using_reject.js
    Original file line number Diff line number Diff line change
    @@ -5,7 +5,7 @@ function checkEmail(emailAddress) {
    return facade.user.getUserByEmailAddress(emailAddress).chain(function (user) {
    return facade.user.isUserAnInvitedTaker(user);
    }, function(err) {
    if (err.isNotFound()) {
    if (err.objectNotFound()) {
    return {available: true};
    } else {
    return comb.rejected(errors.UNKNOWN_ERROR);
  10. @anshdivu anshdivu revised this gist Mar 30, 2016. 2 changed files with 8 additions and 2 deletions.
    5 changes: 4 additions & 1 deletion api_handler_using_null.js
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,7 @@
    function checkEmail_withNull(emailAddress) {
    // promise handles user not found by returing `null`
    // advantage - don't have to write a reject handler
    // disadvantage - possibly forget to write `null` check and cause null pointer exception
    function checkEmail(emailAddress) {
    return facade.user.getUserByEmailAddress(emailAddress).chain(function (user) {
    if (!user) {
    return {available: true};
    5 changes: 4 additions & 1 deletion api_handler_using_reject.js
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,7 @@
    function checkEmail_withReject(emailAddress) {
    // promise handles user not found by rejecting the promise and returning an error
    // advantage - success handler handles the common case and never causes a null pointer exception
    // disadvantage - recovering from `not found` is explicit and has to occur in reject handler
    function checkEmail(emailAddress) {
    return facade.user.getUserByEmailAddress(emailAddress).chain(function (user) {
    return facade.user.isUserAnInvitedTaker(user);
    }, function(err) {
  11. @anshdivu anshdivu created this gist Mar 30, 2016.
    11 changes: 11 additions & 0 deletions api_handler_using_null.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    function checkEmail_withNull(emailAddress) {
    return facade.user.getUserByEmailAddress(emailAddress).chain(function (user) {
    if (!user) {
    return {available: true};
    } else {
    return facade.user.isUserAnInvitedTaker(user);
    }
    }).chain(function (isInvited) {
    return isInvited ? {invited: true} : {available: false}
    }).chain(res.handler.successHandler(), res.handler.errorHandler(errors.UNKNOWN_ERROR));
    }
    13 changes: 13 additions & 0 deletions api_handler_using_reject.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,13 @@
    function checkEmail_withReject(emailAddress) {
    return facade.user.getUserByEmailAddress(emailAddress).chain(function (user) {
    return facade.user.isUserAnInvitedTaker(user);
    }, function(err) {
    if (err.isNotFound()) {
    return {available: true};
    } else {
    return comb.rejected(errors.UNKNOWN_ERROR);
    }
    }).chain(function (isInvited) {
    return isInvited ? {invited: true} : {available: false}
    }).chain(res.handler.successHandler(), res.handler.errorHandler());
    }
    9 changes: 9 additions & 0 deletions facade.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,9 @@
    function getUserByEmailAddress(email) {
    return User.first({emailAddress: email}).chain(function(user) {
    if (!user) {
    return ErrorPromises.NotFound(`No user found for emailAddress = ${email}`)
    }

    return user;
    });
    }