Esempio n. 1
0
        public async Task DeleteItemsAsync <T>(List <string> hashKeys)
        {
            DocumentBatchWrite batchWrite = InternalTable.CreateBatchWrite();

            hashKeys.ForEach(key => batchWrite.AddKeyToDelete(key));
            await batchWrite.ExecuteAsync();
        }
Esempio n. 2
0
        /// <summary>
        /// A utility method for cleaning up expired sessions that IIS failed to delete. The method performs a scan on the table
        /// with a condition that the expiration date is in the past and calls delete on all the keys returned. Scans can be costly on performance
        /// so use this method sparingly like a nightly or weekly clean job.
        /// </summary>
        /// <param name="dbClient">The AmazonDynamoDB client used to find a delete expired sessions.</param>
        /// <param name="tableName">The table to search.</param>
        public static void DeleteExpiredSessions(IAmazonDynamoDB dbClient, string tableName)
        {
            Table table = Table.LoadTable(dbClient, tableName, Table.DynamoDBConsumer.SessionStateProvider, DynamoDBEntryConversion.V1);


            ScanFilter filter = new ScanFilter();

            filter.AddCondition(ATTRIBUTE_EXPIRES, ScanOperator.LessThan, DateTime.Now);

            ScanOperationConfig config = new ScanOperationConfig();

            config.AttributesToGet = new List <string> {
                ATTRIBUTE_SESSION_ID
            };
            config.Select = SelectValues.SpecificAttributes;
            config.Filter = filter;

            DocumentBatchWrite batchWrite = table.CreateBatchWrite();
            Search             search     = table.Scan(config);

            do
            {
                List <Document> page = search.GetNextSet();
                foreach (var document in page)
                {
                    batchWrite.AddItemToDelete(document);
                }
            } while (!search.IsDone);

            batchWrite.Execute();
        }
Esempio n. 3
0
        public async Task PutItemsAsync <T>(List <T> itemsToPut)
        {
            DocumentBatchWrite batchWrite = InternalTable.CreateBatchWrite();

            itemsToPut.ForEach(item =>
            {
                batchWrite.AddDocumentToPut(GetDocument(item));
            });

            await batchWrite.ExecuteAsync();
        }
Esempio n. 4
0
        public async Task InsertBatchItems(List <Profile> profiles)
        {
            try
            {
                DocumentBatchWrite request = _table.CreateBatchWrite();
                foreach (var profile in profiles)
                {
                    request.AddDocumentToPut(ConvertToDocument(profile));
                }
                await request.ExecuteAsync();

                Console.WriteLine("Items created successfully");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
Esempio n. 5
0
        public async Task StoreEvents(List <MDBTimelineEvent> timelineEvents)
        {
            try
            {
                Table table = Table.LoadTable(client, "TimelineEvents");
                DocumentBatchWrite batchWrite = table.CreateBatchWrite();
                foreach (MDBTimelineEvent tlevent in timelineEvents)
                {
                    batchWrite.AddDocumentToPut(tlevent.AsDynamoDocument());
                }

                await batchWrite.ExecuteAsync();
            }
            catch (Exception ex)
            {
                Console.WriteLine("StoreEvents ERROR: " + ex.Message);
                throw ex;
            }
        }
Esempio n. 6
0
        public async Task InsertNewItems(List <Profile> profiles)
        {
            try
            {
                List <Document>    documents  = profiles.Select(ConvertToDocument).ToList();
                DocumentBatchWrite batchWrite = _table.CreateBatchWrite();
                foreach (var document in documents)
                {
                    batchWrite.AddDocumentToPut(document);
                }
                await batchWrite.ExecuteAsync();

                Console.WriteLine("Documents have been inserted successfully");
            }
            catch (AmazonDynamoDBException ex)
            {
                Console.WriteLine(ex);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
Esempio n. 7
0
 internal static Task ExecuteAsync(this DocumentBatchWrite batch)
 {
     return(Task.Factory.FromAsync(batch.BeginExecute, batch.EndExecute, null));
 }
Esempio n. 8
0
        public async Task <IActionResult> Get([FromHeader] string key, [FromHeader] string payload)
        {
            try
            {
                return(Ok());

                if (key != "enginekey")
                {
                    return(BadRequest("bad"));
                }

                AmazonDynamoDBClient client = new AmazonDynamoDBClient();
                Table           table       = Table.LoadTable(client, "OrderBook");
                List <Document> docs        = new List <Document>();
                int             bids        = payload.IndexOf("bids");
                for (int i = 0; i < payload.Length; i++)
                {
                    if (payload[i] != '[')
                    {
                        continue;
                    }
                    Document doc = new Document();
                    string   price = new string(""); string volume = new string("");
                    i += 1;
                    while (true && i < payload.Length)
                    {
                        if (payload[i] == ',')
                        {
                            i += 1; break;
                        }
                        price += payload[i];
                        i     += 1;
                    }
                    while (true && i < payload.Length)
                    {
                        if (payload[i] == ']')
                        {
                            break;
                        }
                        volume += payload[i];
                        i      += 1;
                    }
                    doc["Price"]  = price;
                    doc["Volume"] = volume;
                    doc["Side"]   = i < bids ? "Buy" : "Sell";
                    docs.Add(doc);
                }

                DocumentBatchWrite write = table.CreateBatchWrite();
                foreach (Document doc in docs)
                {
                    write.AddDocumentToPut(doc);
                }

                await write.ExecuteAsync();

                return(Ok());
            }
            catch
            {
                return(BadRequest("something went wrong"));
            }
        }
Esempio n. 9
0
        private void TestMultiTableDocumentBatchWrite(Table hashTable, Table hashRangeTable)
        {
            var multiTableDocumentBatchWrite = new MultiTableDocumentBatchWrite();

            var doc1a = new Document();

            doc1a["Id"]   = 5101;
            doc1a["Data"] = Guid.NewGuid().ToString();
            var doc1b = new Document();

            doc1b["Id"]   = 5102;
            doc1b["Data"] = Guid.NewGuid().ToString();
            {
                var writer = new DocumentBatchWrite(hashTable);
                writer.AddDocumentToPut(doc1a);
                writer.AddDocumentToPut(doc1b);
                multiTableDocumentBatchWrite.AddBatch(writer);
            }

            var doc2a = new Document();

            doc2a["Id"]   = 5201;
            doc2a["Data"] = Guid.NewGuid().ToString();
            var doc2b = new Document();

            doc2b["Id"]   = 5202;
            doc2b["Data"] = Guid.NewGuid().ToString();
            {
                var writer = new DocumentBatchWrite(hashTable);
                writer.AddDocumentToPut(doc2a);
                writer.AddDocumentToPut(doc2b);
                multiTableDocumentBatchWrite.AddBatch(writer);
            }

            var doc3a = new Document();

            doc3a["Name"] = "Gunnar";
            doc3a["Age"]  = 77;
            doc3a["Job"]  = "Retired";
            doc3a["Data"] = Guid.NewGuid().ToString();
            {
                var writer = new DocumentBatchWrite(hashRangeTable);
                writer.AddDocumentToPut(doc3a);
                multiTableDocumentBatchWrite.AddBatch(writer);
            }


            multiTableDocumentBatchWrite.Execute();

            Document getDoc;

            getDoc = hashTable.GetItem(5101);
            Assert.AreEqual(doc1a["Data"].AsString(), getDoc["Data"].AsString());

            getDoc = hashTable.GetItem(5102);
            Assert.AreEqual(doc1b["Data"].AsString(), getDoc["Data"].AsString());

            getDoc = hashTable.GetItem(5201);
            Assert.AreEqual(doc2a["Data"].AsString(), getDoc["Data"].AsString());

            getDoc = hashTable.GetItem(5202);
            Assert.AreEqual(doc2b["Data"].AsString(), getDoc["Data"].AsString());

            getDoc = hashRangeTable.GetItem("Gunnar", 77);
            Assert.AreEqual(doc3a["Data"].AsString(), getDoc["Data"].AsString());

            multiTableDocumentBatchWrite = new MultiTableDocumentBatchWrite();
            {
                var deleteWriter = new DocumentBatchWrite(hashTable);
                deleteWriter.AddItemToDelete(doc1a);
                deleteWriter.AddItemToDelete(doc1b);
                deleteWriter.AddItemToDelete(doc2a);
                deleteWriter.AddItemToDelete(doc2b);
                multiTableDocumentBatchWrite.AddBatch(deleteWriter);
            }
            {
                var deleteWriter = new DocumentBatchWrite(hashRangeTable);
                deleteWriter.AddItemToDelete(doc3a);
                multiTableDocumentBatchWrite.AddBatch(deleteWriter);
            }
            multiTableDocumentBatchWrite.Execute();
        }