public void Execute_MixedBatch() { // Generate test user const int idx = 20; var testUser = new InsertUser { Id = Guid.NewGuid(), Name = string.Format("Name {0}", idx), Age = idx, CreatedDate = TestDataGenerator.GetDateTimeInPast(idx), IsActive = idx % 2 == 0, LastLoginDate = TestDataGenerator.GetNullableDateTimeInPast(idx), LoginHistory = TestDataGenerator.GetList(idx, TestDataGenerator.GetDateTimeInPast), LuckyNumbers = TestDataGenerator.GetSet(idx, i => i), ChildrenAges = TestDataGenerator.GetDictionary(idx, i => string.Format("Child {0}", i), i => i), FavoriteColor = TestDataGenerator.GetEnumValue <RainbowColor>(idx), TypeOfUser = TestDataGenerator.GetEnumValue <UserType?>(idx), PreferredContact = TestDataGenerator.GetEnumValue <ContactMethod>(idx), HairColor = TestDataGenerator.GetEnumValue <HairColor>(idx) }; // Get id of existing user for deleting and updating Guid deleteId = TestDataHelper.Users[0].UserId; Guid updateId = TestDataHelper.Users[1].UserId; // Create batch of mixed statements and execute ICqlBatch batch = CqlClient.CreateBatch(); batch.Insert(testUser); batch.Delete <InsertUser>("WHERE userid = ?", deleteId); batch.Update <InsertUser>("SET name = ? WHERE userid = ?", "SomeNewName", updateId); CqlClient.Execute(batch); }
public void ExecuteAsync_MixedBatch_Test() { // Generate test user const int idx = 21; var testUser = new InsertUser { Id = Guid.NewGuid(), Name = string.Format("Name {0}", idx), Age = idx, CreatedDate = TestDataGenerator.GetDateTimeInPast(idx), IsActive = idx % 2 == 0, LastLoginDate = TestDataGenerator.GetNullableDateTimeInPast(idx), LoginHistory = TestDataGenerator.GetList(idx, TestDataGenerator.GetDateTimeInPast), LuckyNumbers = TestDataGenerator.GetSet(idx, i => i), FavoriteColor = TestDataGenerator.GetEnumValue <RainbowColor>(idx), TypeOfUser = TestDataGenerator.GetEnumValue <UserType?>(idx), PreferredContact = TestDataGenerator.GetEnumValue <ContactMethod>(idx), HairColor = TestDataGenerator.GetEnumValue <HairColor>(idx) }; // Get id of existing user for deleting and updating Guid deleteId = Guid.NewGuid(); Guid updateId = Guid.NewGuid(); // Create batch of mixed statements and execute var mapper = GetMapper(() => TestHelper.DelayedTask(new RowSet())); ICqlBatch batch = mapper.CreateBatch(); batch.Insert(testUser); batch.Delete <InsertUser>("WHERE userid = ?", deleteId); batch.Update <InsertUser>("SET name = ? WHERE userid = ?", "SomeNewName", updateId); mapper.ExecuteAsync(batch).Wait(); }
public void Execute_MixedBatch_Test() { // Generate test user const int idx = 20; var testUser = new InsertUser { Id = Guid.NewGuid(), Name = string.Format("Name {0}", idx), Age = idx, CreatedDate = TestDataGenerator.GetDateTimeInPast(idx), IsActive = idx % 2 == 0, LastLoginDate = TestDataGenerator.GetNullableDateTimeInPast(idx), LoginHistory = TestDataGenerator.GetList(idx, TestDataGenerator.GetDateTimeInPast), LuckyNumbers = TestDataGenerator.GetSet(idx, i => i), FavoriteColor = TestDataGenerator.GetEnumValue <RainbowColor>(idx), TypeOfUser = TestDataGenerator.GetEnumValue <UserType?>(idx), PreferredContact = TestDataGenerator.GetEnumValue <ContactMethod>(idx), HairColor = TestDataGenerator.GetEnumValue <HairColor>(idx) }; // Get id of existing user for deleting and updating Guid deleteId = Guid.NewGuid(); Guid updateId = Guid.NewGuid(); // Create batch of mixed statements and execute var mapper = GetMapper(() => TestHelper.DelayedTask(new RowSet())); ICqlBatch batch = mapper.CreateBatch(); batch.Insert(testUser); batch.Delete <InsertUser>("WHERE userid = ?", deleteId); batch.Update <InsertUser>("SET name = ? WHERE userid = ?", "SomeNewName", updateId); var queries = batch.Statements.Select(cql => cql.Statement).ToArray(); Assert.AreEqual(3, queries.Length); Assert.AreEqual("INSERT INTO users (userid, Name, Age, CreatedDate, IsActive, " + "LastLoginDate, LoginHistory, LuckyNumbers, ChildrenAges, " + "FavoriteColor, TypeOfUser, preferredcontactmethod, HairColor) VALUES " + "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", queries[0]); Assert.AreEqual("DELETE FROM users WHERE userid = ?", queries[1]); Assert.AreEqual("UPDATE users SET name = ? WHERE userid = ?", queries[2]); mapper.Execute(batch); }
/// <summary> /// Create a new reservation /// </summary> /// <param name="oItem"></param> /// <returns></returns> public async Task <ResultModel <reservation> > AddReservation(item oItem) { ResultModel <reservation> results = new ResultModel <reservation>(); //check if item available var resultItem = await GetItemByIdValueAndTypeAsync(oItem); if (resultItem != null) { ItemStatus outStatus = ItemStatus.available; Enum.TryParse(resultItem.resultContent.status, out outStatus); Stopwatch sw = Stopwatch.StartNew(); var invCount = await mapper .FirstOrDefaultAsync <int> ("select available_count from inventory_by_location_and_upc where business_unit=? and location=? and upc=?", "wireless", "ye30cy", "upc123"); sw.Stop(); File.AppendAllText(@"C:\Guids.txt", $"AddReservation:GetCount: Time taken: {sw.Elapsed.Milliseconds}ms\r\n"); if (outStatus == ItemStatus.available && invCount > 0) { //upate inventory status 2 tables item newItem = new item { businessUnit = oItem.businessUnit, location = oItem.location, upc = oItem.upc, identifierValue = oItem.identifierValue, identifierType = oItem.identifierType, serialNumber = oItem.serialNumber, receiptId = oItem.receiptId, status = ItemStatus.reserved.ToString(), dateCreated = TimeUuid.NewId(), dateUpdated = TimeUuid.NewId(), itemAttributes = null, availableCount = invCount - 1 }; //insert item history itemHistory itemHist = new itemHistory { businessUnit = oItem.businessUnit, location = oItem.location, upc = oItem.upc, histItemId = Guid.NewGuid(), identifierValue = oItem.identifierValue, identifierType = oItem.identifierType, serialNumber = oItem.serialNumber, receiptId = oItem.receiptId, status = ItemStatus.reserved.ToString(), dateCreated = TimeUuid.NewId(), dateUpdated = TimeUuid.NewId(), itemAttributes = null }; //insert itembyIdentifier itemByIdentifier itemById = new itemByIdentifier { businessUnit = oItem.businessUnit, location = oItem.location, upc = oItem.upc, identifierValue = oItem.identifierValue, identifierType = oItem.identifierType, serialNumber = oItem.serialNumber, receiptId = oItem.receiptId, status = ItemStatus.reserved.ToString(), dateCreated = TimeUuid.NewId(), dateUpdated = TimeUuid.NewId(), itemAttributes = null }; var reservationId = Guid.NewGuid(); //create a reservation record reservation newReservation = new reservation { businessUnit = oItem.businessUnit, reservationId = reservationId, reserverId = Guid.NewGuid().ToCqlString(), location = oItem.location, upc = oItem.upc, identifierValue = oItem.identifierValue, identifierType = oItem.identifierType, serialNumber = oItem.serialNumber, receiptId = oItem.receiptId, itemStatus = ItemStatus.reserved.ToString(), dateCreated = TimeUuid.NewId(), dateUpdated = TimeUuid.NewId(), itemAttributes = null, reservationStatus = ReservationStatus.created.ToString() }; //create a reservation history reservationHistory newReservationHist = new reservationHistory { businessUnit = oItem.businessUnit, reservationId = reservationId, histReservationId = Guid.NewGuid(), reserverId = Guid.NewGuid().ToCqlString(), location = oItem.location, upc = oItem.upc, identifierValue = oItem.identifierValue, identifierType = oItem.identifierType, serialNumber = oItem.serialNumber, receiptId = oItem.receiptId, itemStatus = ItemStatus.reserved.ToString(), dateCreated = TimeUuid.NewId(), dateUpdated = TimeUuid.NewId(), itemAttributes = null, reservationStatus = ReservationStatus.created.ToString() }; //create a logged batch ICqlBatch itembatch = mapper.CreateBatch(BatchType.Logged); itembatch.Update <item>("SET status =? , available_count=? , date_updated= ? WHERE business_unit =? and location=? and upc=? and identifier_value=? and identifier_type=? IF status=?" , ItemStatus.reserved.ToString(), invCount - 1, TimeUuid.NewId() , oItem.businessUnit, oItem.location, oItem.upc, oItem.identifierValue, oItem.identifierType, ItemStatus.available.ToString()); itembatch.Options.SetConsistencyLevel(ConsistencyLevel.Quorum); sw = Stopwatch.StartNew(); await mapper.ExecuteAsync(itembatch); sw.Stop(); File.AppendAllText(@"C:\Guids.txt", $"AddReservation:itemBatch:Time taken: {sw.Elapsed.Milliseconds}ms\r\n"); //ICqlBatch reservationbatch = mapper.CreateBatch(BatchType.Logged); //reservationbatch.InsertIfNotExists(newReservation); //sw = Stopwatch.StartNew(); //await mapper.ExecuteConditionalAsync<reservation>(reservationbatch); //sw.Stop(); //File.AppendAllText(@"C:\Guids.txt", $"AddReservation:reservationBatch: Time taken: {sw.Elapsed.Milliseconds}ms\r\n"); ICqlBatch allBatch = mapper.CreateBatch(BatchType.Logged); allBatch.Insert <reservation>(newReservation); allBatch.Insert <itemByIdentifier>(itemById); allBatch.Insert <itemHistory>(itemHist); allBatch.Insert <reservationHistory>(newReservationHist); allBatch.Options.SetConsistencyLevel(ConsistencyLevel.Quorum); sw = Stopwatch.StartNew(); await mapper.ExecuteAsync(allBatch); sw.Stop(); File.AppendAllText(@"C:\Guids.txt", $"AddReservation:restOfBatch: Time taken: {sw.Elapsed.Milliseconds}ms\r\n"); results.resultContent = newReservation; results.resultCode = ResultStatus.success; return(results); } } results.resultCode = ResultStatus.failure; return(results); }