// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 using System; using System.IO; using System.Threading.Tasks; using Amazon.DynamoDBv2; using Amazon.Lambda.Core; using ManagementConsoleBackend.Common; using ManagementConsoleBackend.ManagementService.Data; using ManagementConsoleBackend.ManagementService.Lib; using Newtonsoft.Json; namespace ManagementConsoleBackend.ManagementService; public class PurgeDataRequest { public string ConnectionId; public ClientMessagePurgeData PurgeRequest; } public class PurgeData { /// /// Delete database items /// public async Task PurgeDataHandler(Stream stream, ILambdaContext context) { var eventStr = Utils.ReadEventStream(stream); LambdaLogger.Log(eventStr); var stageServiceUrl = Environment.GetEnvironmentVariable("StageServiceUrl"); var request = JsonConvert.DeserializeObject(eventStr); LambdaLogger.Log(JsonConvert.SerializeObject(request)); var dynamoDbRequestHandler = new DynamoDbRequestHandler(new AmazonDynamoDBClient()); var itemsPurged = 0; if (request.PurgeRequest.PurgeMatchmakingData) { itemsPurged += await dynamoDbRequestHandler.PurgeTable(Environment.GetEnvironmentVariable("TicketLogTableName")); await Utils.SendJsonResponse(request.ConnectionId, stageServiceUrl, new ServerMessagePurgeDataProgress { ItemsPurged = itemsPurged }); itemsPurged += await dynamoDbRequestHandler.PurgeTable(Environment.GetEnvironmentVariable("MatchLogTableName")); await Utils.SendJsonResponse(request.ConnectionId, stageServiceUrl, new ServerMessagePurgeDataProgress { ItemsPurged = itemsPurged }); itemsPurged += await dynamoDbRequestHandler.PurgeTable(Environment.GetEnvironmentVariable("EventLogTableName")); await Utils.SendJsonResponse(request.ConnectionId, stageServiceUrl, new ServerMessagePurgeDataProgress { ItemsPurged = itemsPurged }); } if (request.PurgeRequest.PurgeGameSessionsData) { itemsPurged += await dynamoDbRequestHandler.PurgeTable(Environment.GetEnvironmentVariable("GameSessionTableName")); await Utils.SendJsonResponse(request.ConnectionId, stageServiceUrl, new ServerMessagePurgeDataProgress { ItemsPurged = itemsPurged }); } await Utils.SendJsonResponse(request.ConnectionId, stageServiceUrl, new ServerMessagePurgeData { RequestSubmitted = true, Completed = true, ItemsPurged = itemsPurged}); return false; } }