/// <summary> /// Returns all player's decklist /// </summary> /// <param name="request">Request from gateway</param> /// <param name="context"></param> /// <returns>All deck list</returns> public List <Deck> FunctionHandler(AwsGetRequest <RequestFilter> request, ILambdaContext context) { //context.Logger.LogLine($"Context: {JsonConvert.SerializeObject(context)}"); //context.Logger.LogLine($"Filter: {JsonConvert.SerializeObject(filter)}"); var userUid = request.context.userId; context.Logger.LogLine($"Beginning to get all deck of user {userUid}."); using var client = new AmazonDynamoDBClient(Amazon.RegionEndpoint.EUWest1); Table deckListTable = Table.LoadTable(client, Constantes.TableName); QueryFilter playerFilter = new QueryFilter(); playerFilter.AddCondition(Constantes.DynamoCol.PK, QueryOperator.Equal, new List <AttributeValue> { new AttributeValue($"{Constantes.DynamoKey.USER}{userUid}") }); playerFilter.AddCondition(Constantes.DynamoCol.SK, QueryOperator.BeginsWith, new List <AttributeValue> { new AttributeValue($"{Constantes.DynamoKey.DECK}") }); Search search = deckListTable.Query(playerFilter); List <Deck> decks = new List <Deck>(); do { var set = search.GetNextSetAsync(); set.Wait(); foreach (var deckDoc in set.Result) { var deck = new Deck { Id = deckDoc[Constantes.DynamoCol.DECK_ID], Name = deckDoc[Constantes.DynamoCol.DECK_NAME], Format = deckDoc[Constantes.DynamoCol.FORMAT], Author = deckDoc[Constantes.DynamoCol.AUTHOR], LastUpdatedAt = deckDoc[Constantes.DynamoCol.DATE].AsDateTime(), MainDeck = JsonConvert.DeserializeObject <List <CardInfo> >(deckDoc[Constantes.DynamoCol.MAIN_DECK]), SideDeck = JsonConvert.DeserializeObject <List <CardInfo> >(deckDoc[Constantes.DynamoCol.SIDE_DECK]), }; decks.Add(deck); } } while (!search.IsDone); context.Logger.LogLine("Stream processing complete."); var headersDic = new Dictionary <string, string> { { "Content-type", "application/json" } }; return(decks); }
/// <summary> /// Return the decklist /// </summary> /// <param name="guid">Guid of the wanted guid</param> /// <param name="context"></param> /// <returns>All deck list</returns> public Deck FunctionHandler(AwsGetRequest <RequestModel> request, ILambdaContext context) { var guid = request.parameters.id; var userUid = request.context.userId; context.Logger.LogLine($"Beginning to get Deck {guid}."); using var client = new AmazonDynamoDBClient(Amazon.RegionEndpoint.EUWest1); Table deckListTable = Table.LoadTable(client, Constantes.TableName); QueryFilter playerFilter = new QueryFilter(); playerFilter.AddCondition(Constantes.DynamoCol.PK, QueryOperator.Equal, new List <AttributeValue> { new AttributeValue($"{Constantes.DynamoKey.USER}{userUid}") }); playerFilter.AddCondition(Constantes.DynamoCol.SK, QueryOperator.BeginsWith, new List <AttributeValue> { new AttributeValue($"{Constantes.DynamoKey.DECK}") }); Primitive PK = new Primitive($"{Constantes.DynamoKey.USER}{userUid}"); Primitive SK = new Primitive($"{Constantes.DynamoKey.DECK}{guid}"); var getItem = deckListTable.GetItemAsync(PK, SK); getItem.Wait(); Deck deck = new Deck { Id = getItem.Result[Constantes.DynamoCol.DECK_ID], Name = getItem.Result[Constantes.DynamoCol.DECK_NAME], Format = getItem.Result[Constantes.DynamoCol.FORMAT], Author = getItem.Result[Constantes.DynamoCol.AUTHOR], LastUpdatedAt = getItem.Result[Constantes.DynamoCol.DATE].AsDateTime(), MainDeck = JsonConvert.DeserializeObject <List <CardInfo> >(getItem.Result[Constantes.DynamoCol.MAIN_DECK]), SideDeck = JsonConvert.DeserializeObject <List <CardInfo> >(getItem.Result[Constantes.DynamoCol.SIDE_DECK]), }; context.Logger.LogLine("Stream processing complete."); return(deck); }