예제 #1
0
        async Task <Immutable <CfnResponse> > CreateSeed(CfnRequest cfnRequest, Immutable <CfnResponse> cfnResponse, ILambdaContext context)
        {
            try
            {
                var seedData = cfnRequest.ResourceProperties.SeedData;
                if (seedData == null ||
                    seedData.Count() == 0 ||
                    (seedData.Count() == 1 && string.IsNullOrEmpty(seedData.First())))
                {
                    return(cfnResponse);
                }

                var request = seedData.Select(seed =>
                {
                    return(new SaveItemRequest
                    {
                        Id = "U1",
                        Name = "This is a custom data inserted using a custom resource",
                        Key = seed
                    });
                });

                var result = await _itemService.BatchWrite(request);

                if (result != null)
                {
                    LogHandler.LogMessage(context, "Db seeding successful");
                    return(cfnResponse.Modify(r => r.Status = "SUCCESS"));
                }
                else
                {
                    LogHandler.LogMessage(context, "Db seeding failed");
                    return(cfnResponse.ToBuilder()
                           .Modify(r => r.Status = "FAILED")
                           .Modify(r => r.Reason = $"Resource: {_tableName} not found")
                           .ToImmutable());
                }
            }
            catch (Exception ex)
            {
                LogHandler.LogMessage(context, ex.StackTrace);
                return(cfnResponse.ToBuilder()
                       .Modify(r => r.Status = "FAILED")
                       .Modify(r => r.Reason = ex.Message)
                       .ToImmutable());
            }
        }