Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- scanExpression.scanFilter = @{@"Password": passwordCondition, UserNameOrUserEmail : usernameOrEmailCondition};
- scanExpression.scanFilter = @{@"Password": passwordCondition};
- // Check if email or username and decide DynamoDB Attribute accordingly.
- NSString *UserNameOrUserEmail;
- if ([usernameOrEmail rangeOfString:@"@"].location == NSNotFound)
- UserNameOrUserEmail = @"UserName";
- else
- UserNameOrUserEmail = @"UserEmail";
- AWSDynamoDBScanExpression *scanExpression = [AWSDynamoDBScanExpression new];
- AWSDynamoDBCondition *passwordCondition = [AWSDynamoDBCondition new];
- AWSDynamoDBAttributeValue *passwordAttribute = [AWSDynamoDBAttributeValue new];
- passwordAttribute.S = password;
- passwordCondition.attributeValueList = @[passwordAttribute];
- passwordCondition.comparisonOperator = AWSDynamoDBComparisonOperatorEQ;
- AWSDynamoDBCondition *usernameOrEmailCondition = [AWSDynamoDBCondition new];
- AWSDynamoDBAttributeValue *usernameOrEmailAttribute = [AWSDynamoDBAttributeValue new];
- usernameOrEmailAttribute.S = @"sammy@hhd.com";//usernameOrEmail;
- usernameOrEmailCondition.attributeValueList = @[usernameOrEmailAttribute];
- usernameOrEmailCondition.comparisonOperator = AWSDynamoDBComparisonOperatorEQ;
- //Apply filter condtions: http://stackoverflow.com/a/27856299/818506
- scanExpression.scanFilter = @{@"Password": passwordCondition, UserNameOrUserEmail : usernameOrEmailCondition}; //@{@"UserEmail": usernameOrEmailCondition};//
- //^^^^^^^^^^^^^^^^^^^^^^^^^^^Is this correct?^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- //Perform a scan:
- [[dynamoDBObjectMapper scan:[User class] expression:scanExpression]continueWithBlock: ^id (AWSTask *task){
- if (task.error) {
- NSLog(@"The request failed. Error: [%@]", task.error);
- }
- if (task.exception) {
- NSLog(@"The request failed. Exception: [%@]", task.exception);
- }
- if (task.result) {
- AWSDynamoDBPaginatedOutput *paginatedOutput = task.result;
- for (User *user in paginatedOutput.items) {
- isLoginSuccessful = YES;
- }
- completionHandler(isLoginSuccessful);
- }
- return nil;
- }];
- // create password condition
- let passwordCondition = AWSDynamoDBCondition()
- let v1 = AWSDynamoDBAttributeValue(); v1.S = password
- passwordCondition.comparisonOperator = AWSDynamoDBComparisonOperator.EQ
- passwordCondition.attributeValueList = [ v1 ]
- // create username condition
- let usernameCondition = AWSDynamoDBCondition()
- let v2 = AWSDynamoDBAttributeValue(); v2.S = "sammy@hhd.com"
- usernameCondition.comparisonOperator = AWSDynamoDBComparisonOperator.EQ
- usernameCondition.attributeValueList = [ v2 ]
- // add these conditions to a NSMutableDictionary
- var scanFilterDict : NSMutableDictionary! = NSMutableDictionary()
- scanFilterDict.addEntriesFromDictionary(["password": passwordCondition])
- scanFilterDict.addEntriesFromDictionary(["UserNameOrUserEmail": usernameCondition])
- // use the mutable dictionary as scan filter
- scanInput.scanFilter = scanFilterDict as Dictionary<NSObject, AnyObject>
- scanInput.exclusiveStartKey = self.lastEvaluatedKey
- scanInput.limit = 20
- scanInput.tableName = "yourDynamoDBTable"
- // apply AND operator on both conditions
- scanInput.conditionalOperator = AWSDynamoDBConditionalOperator.And
- AWSDynamoDB.defaultDynamoDB().scan(input)
- let objectMapper = AWSDynamoDBObjectMapper.default()
- let scanExpression = AWSDynamoDBScanExpression()
- scanExpression.filterExpression = "#UserNameOrUserEmail = :UserNameOrUserEmail AND #password = :follows"
- scanExpression.expressionAttributeNames = ["#UserNameOrUserEmail": "UserNameOrUserEmail" , "#password": "password" ,]
- scanExpression.expressionAttributeValues = [":UserNameOrUserEmail": "sammy@hhd.com", ":password": password ,]
- objectMapper.scan(User.self, expression: scanExpression) { (response: AWSDynamoDBPaginatedOutput?, error: Error?) in
- // handle data or error here...
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement