/// <summary> /// Loads table items from DynamoDb /// - Filter property is used to query against DynamoDb table /// </summary> /// <param name="request"></param> /// <returns></returns> public IEnumerable <T> LoadTableItems <T>(LoadTableItemsRequest request) { //LambdaLogger.Log($"Entering: LoadTableItems({ JsonConvert.SerializeObject(request) }"); var response = new List <T>(); try { //SearchDocumentsRequest searchDocumentsRequest = CreateSearchDocumentsRequest(request); //var tableItems = DynamoDbHelper.SearchDocuments(searchDocumentsRequest); //TODOING: build conditions from request filter var tableItems = DynamoDbHelper.Scan <T>(request.Conditions); //TODO: Handle order by expression and record cap here //Use request to hit dynamodb //If has an id, then can use dynamodb GetItem, else need to query based on filter response = tableItems.ToList(); } catch (Exception exp) { LambdaLogger.Log($"Error: { exp }"); //LambdaLogger.Log($"Leaving: LoadTableItems({ JsonConvert.SerializeObject(response) }"); return(response); } //LambdaLogger.Log($"Leaving: LoadTableItems({ JsonConvert.SerializeObject(response) }"); return(response); }
//DONUT USE public UpsertTableItemResponse UpsertTableItems(UpsertTableItemsRequest request) { LambdaLogger.Log($"Entering: UpsertTableItems({ JsonConvert.SerializeObject(request) }"); var response = new UpsertTableItemResponse { IsSuccess = true }; try { //First scan table to see which documents already exist //Need dynamo db helper method to write DynamoDbHelper.BatchWriteDocuments(request.Table, request.Documents); //Because the batch save won't return because I don't wanna await that call response.Documents = request.Documents; } catch (Exception exp) { LambdaLogger.Log($"Error: { exp }"); response.IsSuccess = false; response.ErrorMessage = "Error while inserting table item."; LambdaLogger.Log($"Leaving: UpsertTableItems({ JsonConvert.SerializeObject(response) }"); return(response); } LambdaLogger.Log($"Leaving: UpsertTableItems({ JsonConvert.SerializeObject(response) }"); return(response); }
/// <summary> /// Loads table from DynamoDb /// </summary> /// <param name="request"></param> /// <returns></returns> public LoadTableResponse LoadTable(LoadTableRequest request) { LambdaLogger.Log($"Entering: LoadTable({ JsonConvert.SerializeObject(request) })"); var response = new LoadTableResponse { IsSuccess = true }; try { response.ResponseTable = DynamoDbHelper.GetTable(request.TableName); } catch (Exception exp) { LambdaLogger.Log($"Error: { exp }"); response.IsSuccess = false; response.ErrorMessage = "Error while loading table."; LambdaLogger.Log($"Leaving: LoadTable({ JsonConvert.SerializeObject(response) })"); return(response); } LambdaLogger.Log($"Leaving: LoadTable({ JsonConvert.SerializeObject(response) })"); return(response); }
protected override void ProcessRecord() { base.ProcessRecord(); try { var tableKeys = DynamoDbHelper.GetTableKeys(Table); foreach (var document in DocumentList) { InfoText += ResourceStrings.RemovingItem; KeyText = string.Empty; foreach (var key in tableKeys) { KeyText += string.Format(ResourceStrings.KeyValuePairString, key.Key, document[key.Key].AsString()); } InfoText += KeyText; Table.DeleteItem(document); } } catch (Exception ex) { var errorExecuting = new ErrorRecord(ex, string.Format(ErrorStrings.ErrorRemovingDocument, KeyText), ErrorCategory.InvalidData, ex.Source); WriteError(errorExecuting); } }
private async Task InsertDataAsync(DataModel dataModel) { var dbHelper = new DynamoDbHelper(); await dbHelper.Insert(new DbInsertItem { TableName = "datainfo", Values = new Dictionary <string, object> { { "id", Guid.NewGuid().ToString() }, { "filename", dataModel.FileName }, { "name", dataModel.Name }, { "email", dataModel.Email }, { "phone", dataModel.Phone }, { "time", DateTimeOffset.Now } } }); }
public Card FindByName(string name, string manaCost) { LambdaLogger.Log($"Entering: FindByName({name})"); //var cards = FindAll(string.Format("Name = {0}", name)).FirstOrDefault(); var card = DynamoDbHelper.Load <Card>(name, manaCost); LambdaLogger.Log($"Leaving: FindByName({ JsonConvert.SerializeObject(card) })"); return(card); }
public async Task DeleteTableItemsAsync <T>(IEnumerable <T> items) { try { await DynamoDbHelper.DeleteAsync <T>(items); } catch (Exception exp) { LambdaLogger.Log($"Error occured during DeleteTableItems({ JsonConvert.SerializeObject(items) })"); throw; } }
protected override void ProcessRecord() { base.ProcessRecord(); try { DocumentList = DynamoDbHelper.GetDocumentListFromScan(Client, Request); } catch (Exception ex) { var errorExecuting = new ErrorRecord(ex, ErrorStrings.GatherDocumentListError, ErrorCategory.InvalidData, ex.Source); ThrowTerminatingError(errorExecuting); } }
protected override void BeginProcessing() { base.BeginProcessing(); try { Table = DynamoDbHelper.GetTable(Client, TableName); } catch (Exception ex) { var errorExecuting = new ErrorRecord(ex, ErrorStrings.TableDoesNotExistError, ErrorCategory.InvalidData, ex.Source); ThrowTerminatingError(errorExecuting); } }
public void SaveTableItems <T>(IEnumerable <T> items) { //LambdaLogger.Log($"Entering: SaveTableItems({ JsonConvert.SerializeObject(items) }"); try { DynamoDbHelper.Save <T>(items); } catch (Exception exp) { LambdaLogger.Log($"Error occurred during SaveTableItems({ JsonConvert.SerializeObject(items) }) - Exception: { exp }"); throw; } //LambdaLogger.Log($"Leaving: SaveTableItems({ JsonConvert.SerializeObject(items) }"); }
protected override void BeginProcessing() { base.BeginProcessing(); try { if (!string.IsNullOrWhiteSpace(FilterExpression) && Parameters == null) { throw new Exception(ErrorStrings.FilterExistsNoParameters); } } catch (Exception ex) { var errorExecuting = new ErrorRecord(ex, ErrorStrings.TableDoesNotExistError, ErrorCategory.InvalidData, ex.Source); ThrowTerminatingError(errorExecuting); } try { Table = DynamoDbHelper.GetTable(Client, TableName); } catch (Exception ex) { var errorExecuting = new ErrorRecord(ex, ErrorStrings.TableDoesNotExistError, ErrorCategory.InvalidData, ex.Source); ThrowTerminatingError(errorExecuting); } try { if (!string.IsNullOrWhiteSpace(FilterExpression) && (Parameters != null || Parameters.ParamterCount > 0)) { Request = DynamoDbHelper.CreateScanRequest(TableName, FilterExpression, Parameters.ParameterDictionary); } else if (!string.IsNullOrWhiteSpace(FilterExpression) && (Parameters == null) || Parameters.ParamterCount == 0) { Request = DynamoDbHelper.CreateScanRequest(TableName, FilterExpression); } else { Request = DynamoDbHelper.CreateScanRequest(TableName); } } catch (Exception ex) { var errorExecuting = new ErrorRecord(ex, ErrorStrings.ScanRequestCreationError, ErrorCategory.InvalidData, ex.Source); ThrowTerminatingError(errorExecuting); } }
internal static IContainer ConfigureContainer(HttpConfiguration config) { var builder = new ContainerBuilder(); builder.RegisterApiControllers(Assembly.GetExecutingAssembly()); builder.RegisterWebApiFilterProvider(config); builder.RegisterType <Context>().As <IContext>().SingleInstance(); builder.Register(c => new AmazonDynamoDBClient(DynamoDbHelper.ConfigureDynamoDb())).SingleInstance(); builder.RegisterType <ReviewTable>().AsSelf(); // TODO: configure different sinks for information and error and stuff in between Log.Logger = new LoggerConfiguration() //.WriteTo.DynamoDB("Local-Log") // TODO: how do we configure this for local and different envs? .WriteTo.Trace() .MinimumLevel.Debug() .CreateLogger(); builder.Register(c => new GlobalExceptionFilter(c.Resolve <ILogger>())) .AsWebApiExceptionFilterFor <ApiController>().SingleInstance(); // should this be single instance, that is the default in web api...? builder.Register(c => new IntegrationTestFilter()) .AsWebApiActionFilterFor <TestController>().SingleInstance(); builder.Register(c => new RequestLogFilter(c.Resolve <ILogger>())) .AsWebApiActionFilterFor <ApiController>().SingleInstance(); // single instance or not? builder.RegisterLogger(); var container = builder.Build(); return(container); }
public CategoriesEndpointTests(MoneyMateApiWebApplicationFactory factory) { _httpClient = factory.CreateDefaultClient(); _dynamoDbHelper = new DynamoDbHelper(); }
public ServiceContext() { Repository = new DaoFactory(); DynamoContext = new DynamoDBContext(DynamoDbHelper.GetClient()); }
public AnalyticsEndpointTests(MoneyMateApiWebApplicationFactory factory) { HttpClient = factory.CreateDefaultClient(); DynamoDbHelper = new DynamoDbHelper(); }