public void Biggylist_Removes_Single_Item_From_Json_Store() { var propertyList = new BiggyList <Property>(_propertyStore); int initialCount = propertyList.Count; var newProperty = new Property { Id = 1, Name = "John's High-End Apartments", Address = "16 Property Parkway, Portland, OR 97204" }; propertyList.Add(newProperty); int addedItemId = newProperty.Id; // Just to be sure, reload from backing store and check what was added: propertyList = new BiggyList <Property>(_propertyStore); var addedProperty = propertyList.FirstOrDefault(p => p.Id == addedItemId); bool isAddedProperly = addedProperty.Name.Contains("High-End"); int qtyAdded = propertyList.Count; // Delete: var foundProperty = propertyList.FirstOrDefault(); propertyList.Remove(foundProperty); propertyList = new BiggyList <Property>(_propertyStore); int remaining = propertyList.Count; Assert.IsTrue(isAddedProperly && qtyAdded == 1 && remaining == 0); }
public DownloadRecord InitDownload(DownloadRecord downloadRecord) { lock (JsonStore) { var dRecords = new BiggyList <DownloadRecord>(JsonStore); var dr = dRecords.FirstOrDefault(a => a.Url == downloadRecord.Url); if (dr == null) { if (downloadRecord.DownloadItem == null) { downloadRecord.DownloadItem = new DownloadItem() { IsComplete = false }; } dRecords.Add(downloadRecord); dr = downloadRecord; } else { dr.IsCancelled = downloadRecord.IsCancelled; } dr.Hash = GetHashString(downloadRecord.Url); var finalFolder = EnsurePath(dr.Hash); var fullPath = Path.Combine(finalFolder, dr.FileName); dr.FullPath = fullPath; dRecords.Update(dr); return(dr); } }
public void Biggylist_Adds_Range_Of_Items_To_Json_Store() { var propertyList = new BiggyList <Property>(_propertyStore); int initialCount = propertyList.Count; var myBatch = new List <Property>(); int qtyToAdd = 10; // This test uses an initial index value of 1 so taht there is a non-zero ID for the first item: for (int i = 1; i <= qtyToAdd; i++) { var newProperty = new Property { Id = i, Name = "New Apartment " + i, Address = "Some Street in a Lonely Town" }; myBatch.Add(newProperty); } propertyList.Add(myBatch); // Reload from the store: propertyList = new BiggyList <Property>(_propertyStore); var addedItems = propertyList.FirstOrDefault(p => p.Name.Contains("New Apartment")); Assert.IsTrue(initialCount == 0 && propertyList.Count == qtyToAdd); }
public void Biggylist_Updates_Single_Item_In_Json_Store() { var propertyList = new BiggyList <Property>(_propertyStore); int initialCount = propertyList.Count; var newProperty = new Property { Id = 1, Name = "John's Luxury Apartments", Address = "2639 I St NW, Washington, D.C. 20037" }; propertyList.Add(newProperty); int addedItemId = newProperty.Id; // Just to be sure, reload from backing store and check what was added: propertyList = new BiggyList <Property>(_propertyStore); var addedProperty = propertyList.FirstOrDefault(p => p.Id == addedItemId); bool isAddedProperly = addedProperty.Name.Contains("John's Luxury"); // Now Update: string newName = "John's Low-Rent Apartments"; addedProperty.Name = newName; propertyList.Update(addedProperty); // Go fetch again: propertyList = new BiggyList <Property>(_propertyStore); addedProperty = propertyList.FirstOrDefault(p => p.Id == addedItemId); bool isUpdatedProperly = addedProperty.Name == newName; Assert.IsTrue(isAddedProperly && isUpdatedProperly); }
public void Biggylist_Updates_Single_Item_In_Json_Store() { var propertyList = new BiggyList<Property>(_propertyStore); int initialCount = propertyList.Count; var newProperty = new Property { Id = 1, Name = "John's Luxury Apartments", Address = "2639 I St NW, Washington, D.C. 20037" }; propertyList.Add(newProperty); int addedItemId = newProperty.Id; // Just to be sure, reload from backing store and check what was added: propertyList = new BiggyList<Property>(_propertyStore); var addedProperty = propertyList.FirstOrDefault(p => p.Id == addedItemId); bool isAddedProperly = addedProperty.Name.Contains("John's Luxury"); // Now Update: string newName = "John's Low-Rent Apartments"; addedProperty.Name = newName; propertyList.Update(addedProperty); // Go fetch again: propertyList = new BiggyList<Property>(_propertyStore); addedProperty = propertyList.FirstOrDefault(p => p.Id == addedItemId); bool isUpdatedProperly = addedProperty.Name == newName; Assert.IsTrue(isAddedProperly && isUpdatedProperly); }
static void Main(string[] args) { var store = new JsonStore <Item>("dbDirectory", "dbName", "itemTable"); var items = new BiggyList <Item>(store); //items.Add(new Item { Id = 1, Name = "item one" }); //items.Add(new Item { Id = 2, Name = "item two" }); //items.Contains() foreach (var item in items) { WriteLine($"{item.Id} - {item.Name}"); } var contains = items.Contains(new Item { Id = 1, Name = "item one" }); WriteLine("Contains: " + contains); var firstOrDefault = items.FirstOrDefault(i => i.Id == 1); WriteLine("FirstOrDefault: " + firstOrDefault.Name); ReadLine(); }
public void Updates_Item_With_OVerride_From_List_And_Store() { // Just in case: var overriddenClients = new BiggyList <Client>(new SQLServerStore <Client>(_hostDb)); overriddenClients.Clear(); // Add a new record: var newClient = new Client() { LastName = "Atten", FirstName = "John", Email = "*****@*****.**" }; overriddenClients.Add(newClient); int newId = newClient.ClientId; // Update the same record-by-id with a new instance. OverrideClient overrides Equals with the id: var updateMe = new Client() { ClientId = newId, LastName = "Appleseed", FirstName = "John", Email = "*****@*****.**" }; overriddenClients.Update(updateMe); // Open a new instance, to see if the item was added to the backing store as well: var altClientList = new BiggyList <Client>(new SQLServerStore <Client>(_connectionStringName)); var updated = altClientList.FirstOrDefault(c => c.LastName == "Appleseed"); Assert.True(updated != null && updated.LastName == "Appleseed"); }
public DownloadRecord GetDownloadRecord(string url) { lock (JsonStore) { var dRecords = new BiggyList <DownloadRecord>(JsonStore); var item = dRecords.FirstOrDefault(x => x.Url == url); return(item); } }
public void Adds_Item_To_List_Not_Store() { _biggyList.Add(new Widget { SKU = "001", Name = "Test widget 1", Price = 2.00M }); var item = _biggyList.FirstOrDefault(x => x.SKU == "001"); Assert.NotNull(item); }
public void Biggylist_Adds_Single_Item_To_Sqlite_Store() { var PropertyDocumentList = new BiggyList<PropertyDocument>(_PropertyDocumentStore); int initialCount = PropertyDocumentList.Count; var newPropertyDocument = new PropertyDocument { Name = "Watergate Apartments", Address = "2639 I St NW, Washington, D.C. 20037" }; PropertyDocumentList.Add(newPropertyDocument); // Reload from the store: PropertyDocumentList = new BiggyList<PropertyDocument>(_PropertyDocumentStore); var addedItems = PropertyDocumentList.FirstOrDefault(p => p.Name.Contains("Watergate")); Assert.IsTrue(initialCount == 0 && PropertyDocumentList.Count == 1 && addedItems.Id == 1); }
public void Cancel(string url) { lock (JsonStore) { var dRecords = new BiggyList <DownloadRecord>(JsonStore); var item = dRecords.FirstOrDefault(x => x.Url == url); if (item != null) { item.IsCancelled = true; dRecords.Update(item); } } }
public void Biggylist_Adds_Single_Item_To_Json_Store() { var propertyList = new BiggyList<Property>(_propertyStore); int initialCount = propertyList.Count; var newProperty = new Property { Id = 1, Name = "Watergate Apartments", Address = "2639 I St NW, Washington, D.C. 20037" }; propertyList.Add(newProperty); // Reload from the store: propertyList = new BiggyList<Property>(_propertyStore); var addedItems = propertyList.FirstOrDefault(p => p.Name.Contains("Watergate")); Assert.IsTrue(initialCount == 0 && propertyList.Count == 1); }
public void Remove(string url) { lock (JsonStore) { var dRecords = new BiggyList <DownloadRecord>(JsonStore); var item = dRecords.FirstOrDefault(x => x.Url == url); if (item != null) { var path = Path.Combine(RootFolder, item.Hash); var suggestedName = Path.Combine(path, item.FileName); File.Delete(suggestedName); Directory.Delete(path); dRecords.Remove(item); } } }
public void UpdateDownload(string url, DownloadItem downloadItem) { lock (JsonStore) { // This immediately load any existing artist documents from the json file: var dRecords = new BiggyList <DownloadRecord>(JsonStore); // This query never hits the disk - it uses LINQ directly in memory: var dr = dRecords.FirstOrDefault(a => a.Url == url); if (dr == null) { // throw new Exception(string.Format("Download record does not exit:[{0}]", url)); return; } dr.DownloadItem = downloadItem; dRecords.Update(dr); } }
public void Biggylist_Adds_Single_Item_To_Sqlite_Store() { var PropertyDocumentList = new BiggyList <PropertyDocument>(_PropertyDocumentStore); int initialCount = PropertyDocumentList.Count; var newPropertyDocument = new PropertyDocument { Name = "Watergate Apartments", Address = "2639 I St NW, Washington, D.C. 20037" }; PropertyDocumentList.Add(newPropertyDocument); // Reload from the store: PropertyDocumentList = new BiggyList <PropertyDocument>(_PropertyDocumentStore); var addedItems = PropertyDocumentList.FirstOrDefault(p => p.Name.Contains("Watergate")); Assert.IsTrue(initialCount == 0 && PropertyDocumentList.Count == 1 && addedItems.Id == 1); }
public void Biggylist_Adds_Single_Item_To_Json_Store() { var propertyList = new BiggyList <Property>(_propertyStore); int initialCount = propertyList.Count; var newProperty = new Property { Id = 1, Name = "Watergate Apartments", Address = "2639 I St NW, Washington, D.C. 20037" }; propertyList.Add(newProperty); // Reload from the store: propertyList = new BiggyList <Property>(_propertyStore); var addedItems = propertyList.FirstOrDefault(p => p.Name.Contains("Watergate")); Assert.IsTrue(initialCount == 0 && propertyList.Count == 1); }
public void Biggylist_Adds_Range_Of_Items_To_Pg_Store() { var propertyList = new BiggyList<Property>(_propertyStore); int initialCount = propertyList.Count; var myBatch = new List<Property>(); int qtyToAdd = 10; for (int i = 1; i <= qtyToAdd; i++) { var newProperty = new Property { Name = "New Apartment " + i, Address = "Some Street in a Lonely Town" }; myBatch.Add(newProperty); } propertyList.Add(myBatch); // Reload from the store: propertyList = new BiggyList<Property>(_propertyStore); var addedItems = propertyList.FirstOrDefault(p => p.Name.Contains("New Apartment")); Assert.IsTrue(initialCount == 0 && propertyList.Count == qtyToAdd); }
public void Removes_Item_From_List_And_Store() { // Just in case: _clients.Clear(); var newClient = new Client() { LastName = "Atten", FirstName = "John", Email = "*****@*****.**" }; _clients.Add(newClient); int firstCount = _clients.Count(); // Open a new instance, to see if the item was added to the backing store as well: var altClientList = new BiggyList <Client>(new PGStore <Client>(_connectionStringName)); var deleteMe = altClientList.FirstOrDefault(); altClientList.Remove(deleteMe); Assert.True(firstCount > 0 && altClientList.Count() == 0); }
public void Biggylist_Adds_Range_Of_Items_To_Json_Store() { var propertyList = new BiggyList<Property>(_propertyStore); int initialCount = propertyList.Count; var myBatch = new List<Property>(); int qtyToAdd = 10; // This test uses an initial index value of 1 so taht there is a non-zero ID for the first item: for (int i = 1; i <= qtyToAdd; i++) { var newProperty = new Property { Id = i, Name = "New Apartment " + i, Address = "Some Street in a Lonely Town" }; myBatch.Add(newProperty); } propertyList.Add(myBatch); // Reload from the store: propertyList = new BiggyList<Property>(_propertyStore); var addedItems = propertyList.FirstOrDefault(p => p.Name.Contains("New Apartment")); Assert.IsTrue(initialCount == 0 && propertyList.Count == qtyToAdd); }
public void Updates_Item_From_List_And_Store() { // Just in case: _clients.Clear(); var newClient = new Client() { LastName = "Atten", FirstName = "John", Email = "*****@*****.**" }; _clients.Add(newClient); _clients = new BiggyList <Client>(new PGStore <Client>(_connectionStringName)); var updateMe = _clients.FirstOrDefault(); updateMe.LastName = "Appleseed"; _clients.Update(updateMe); // Open a new instance, to see if the item was added to the backing store as well: var altClientList = new BiggyList <Client>(new PGStore <Client>(_connectionStringName)); var updated = altClientList.FirstOrDefault(c => c.LastName == "Appleseed"); Assert.True(updated != null && updated.LastName == "Appleseed"); }
public void Biggylist_Adds_Range_Of_Items_To_SQLite_Store() { var propertyList = new BiggyList <Property>(_propertyStore); int initialCount = propertyList.Count; var myBatch = new List <Property>(); int qtyToAdd = 10; for (int i = 1; i <= qtyToAdd; i++) { var newProperty = new Property { Name = "New Apartment " + i, Address = "Some Street in a Lonely Town" }; myBatch.Add(newProperty); } propertyList.Add(myBatch); // Reload from the store: propertyList = new BiggyList <Property>(_propertyStore); var addedItems = propertyList.FirstOrDefault(p => p.Name.Contains("New Apartment")); Assert.IsTrue(initialCount == 0 && propertyList.Count == qtyToAdd); }
public void Updates_Item_In_List_And_Store_With_Equals_Override() { var overrideWidgetList = new BiggyList <OverrideWidget>(new JsonStore <OverrideWidget>()); overrideWidgetList.Clear(); overrideWidgetList.Add(new OverrideWidget { SKU = "001", Name = "Test widget 1", Price = 2.00M }); var updatedItem = new OverrideWidget { SKU = "001", Name = "UPDATED", Price = 2.00M }; overrideWidgetList.Update(updatedItem); // Reload the list: overrideWidgetList = new BiggyList <OverrideWidget>(new JsonStore <OverrideWidget>()); // Grab from the list: var updatedInList = overrideWidgetList.FirstOrDefault(w => w.Name == "UPDATED"); // Make sure updated in both: Assert.True(updatedInList.Name == "UPDATED"); }
public void Updates_Item_With_OVerride_From_List_And_Store() { // Just in case: var overriddenClients = new BiggyList<Client>(new SQLServerStore<Client>(_hostDb)); overriddenClients.Clear(); // Add a new record: var newClient = new Client() { LastName = "Atten", FirstName = "John", Email = "*****@*****.**" }; overriddenClients.Add(newClient); int newId = newClient.ClientId; // Update the same record-by-id with a new instance. OverrideClient overrides Equals with the id: var updateMe = new Client() { ClientId = newId, LastName = "Appleseed", FirstName = "John", Email = "*****@*****.**" }; overriddenClients.Update(updateMe); // Open a new instance, to see if the item was added to the backing store as well: var altClientList = new BiggyList<Client>(new SQLServerStore<Client>(_connectionStringName)); var updated = altClientList.FirstOrDefault(c => c.LastName == "Appleseed"); Assert.True(updated != null && updated.LastName == "Appleseed"); }
public static void Run() { var sw = new Stopwatch(); Console.WriteLine("==========================================================="); Console.WriteLine("Postgres - SOME FANCY QUERYING"); Console.WriteLine("==========================================================="); var _db = new PGCache(_connectionStringName); IBiggy <Artist> _artists; IBiggy <Album> _albums; IBiggy <Track> _tracks; Console.WriteLine("Loading up Artists from Chinook..."); sw.Start(); _artists = new BiggyList <Artist>(new PGStore <Artist>(_db)); sw.Stop(); Console.WriteLine("\tLoaded {0} Artist records in {1} ms", _artists.Count(), sw.ElapsedMilliseconds); Console.WriteLine("Loading up Albums from Chinook..."); sw.Reset(); sw.Start(); _albums = new BiggyList <Album>(new PGStore <Album>(_db)); sw.Stop(); Console.WriteLine("\tLoaded {0} Albums in {1} ms", _artists.Count(), sw.ElapsedMilliseconds); Console.WriteLine("Loading up tracks from Chinook..."); sw.Reset(); sw.Start(); _tracks = new BiggyList <Track>(new PGStore <Track>(_db)); sw.Stop(); Console.WriteLine("\tLoaded {0} Tracks in {1} ms", _tracks.Count(), sw.ElapsedMilliseconds); Console.WriteLine("Grab the record for AC/DC..."); sw.Reset(); sw.Start(); var acdc = _artists.FirstOrDefault(a => a.Name == "AC/DC"); sw.Stop(); Console.WriteLine("\tFound AC/DC from memory in {0} ms", sw.ElapsedMilliseconds); Console.WriteLine("Find all the albums by AC/DC ..."); sw.Reset(); sw.Start(); var acdcAlbums = _albums.Where(a => a.ArtistId == acdc.ArtistId); sw.Stop(); Console.WriteLine("\tFound All {0} AC/DC albums from memory in {1} ms", acdcAlbums.Count(), sw.ElapsedMilliseconds); Console.WriteLine("Find all the Tracks from Albums by AC/DC ..."); sw.Reset(); sw.Start(); var acdcTracks = from t in _tracks join a in acdcAlbums on t.AlbumId equals a.AlbumId select t; sw.Stop(); Console.WriteLine("\tFound All {0} tracks by ACDC using in-memory JOIN in {1} ms:", acdcTracks.Count(), sw.ElapsedMilliseconds); foreach (var track in acdcTracks) { Console.WriteLine("\t-{0}", track.Name); } Console.WriteLine(Environment.NewLine); Console.WriteLine("==========================================================="); Console.WriteLine("POSTGES - BASIC CRUD OPERATIONS"); Console.WriteLine("==========================================================="); IBiggy <Customer> _customers; sw.Reset(); Console.WriteLine("Loading up customers from Chinook..."); sw.Start(); _customers = new BiggyList <Customer>(new PGStore <Customer>(_db)); sw.Stop(); Console.WriteLine("\tLoaded {0} records in {1}ms", _customers.Count(), sw.ElapsedMilliseconds); sw.Reset(); Console.WriteLine("INSERTING a NEW Customer into Chinook..."); var newCustomer = new Customer() { LastName = "Atten", FirstName = "John", Email = "*****@*****.**" }; sw.Start(); _customers.Add(newCustomer); sw.Stop(); Console.WriteLine("\tWrote 1 record for a new count of {0} records in {1} ms", _customers.Count(), sw.ElapsedMilliseconds); sw.Reset(); Console.WriteLine("UPDATING the new Customer record in Chinook..."); newCustomer.FirstName = "Fred"; sw.Start(); _customers.Update(newCustomer); sw.Stop(); Console.WriteLine("\tUpdated 1 record for a new count of {0} records in {1} ms", _customers.Count(), sw.ElapsedMilliseconds); sw.Reset(); Console.WriteLine("DELETE the new Customer record in Chinook..."); sw.Start(); _customers.Remove(newCustomer); sw.Stop(); Console.WriteLine("\tDeleted 1 record for a new count of {0} records in {1} ms", _customers.Count(), sw.ElapsedMilliseconds); Console.WriteLine(Environment.NewLine); Console.WriteLine("==========================================================="); Console.WriteLine("POSTGES - BULK INSERTS AND DELETIONS"); Console.WriteLine("==========================================================="); Console.WriteLine("Creating Test Table..."); if (_db.TableExists("client")) { _db.DropTable("client"); } var columnDefs = new List <string>(); columnDefs.Add("client_id serial PRIMARY KEY NOT NULL"); columnDefs.Add("last_name Text NOT NULL"); columnDefs.Add("first_name Text NOT NULL"); columnDefs.Add("email Text NOT NULL"); _db.CreateTable("client", columnDefs); IBiggy <Client> _clients; sw.Reset(); int INSERT_QTY = 10000; Console.WriteLine("BULK INSERTING {0} client records in Chinook...", INSERT_QTY); _clients = new BiggyList <Client>(new PGStore <Client>(_db)); var inserts = new List <Client>(); for (int i = 0; i < INSERT_QTY; i++) { inserts.Add(new Client() { LastName = string.Format("Atten {0}", i.ToString()), FirstName = "John", Email = "*****@*****.**" }); } sw.Start(); var inserted = _clients.Add(inserts); sw.Stop(); Console.WriteLine("\tInserted {0} records in {1} ms", inserted.Count(), sw.ElapsedMilliseconds); sw.Reset(); Console.WriteLine("Loading up Bulk inserted CLients from Chinook..."); sw.Start(); _clients = new BiggyList <Client>(new PGStore <Client>(_db)); sw.Stop(); Console.WriteLine("\tLoaded {0} records in {1}ms", _clients.Count(), sw.ElapsedMilliseconds); sw.Reset(); Console.WriteLine("DELETING added records from Chinook..."); var toRemove = _clients.Where(x => x.Email == "*****@*****.**"); sw.Start(); var removed = _clients.Remove(toRemove.ToList()); sw.Stop(); Console.WriteLine("\tDeleted {0} records in {1}ms", removed.Count(), sw.ElapsedMilliseconds); }
public void Updates_Item_From_List_And_Store() { // Just in case: _clients.Clear(); var newClient = new Client() { LastName = "Atten", FirstName = "John", Email = "*****@*****.**" }; _clients.Add(newClient); _clients = new BiggyList<Client>(_clientStore); var updateMe = _clients.FirstOrDefault(); updateMe.LastName = "Appleseed"; _clients.Update(updateMe); // Open a new instance, to see if the item was added to the backing store as well: var altClientList = new BiggyList<Client>(new SQLServerStore<Client>(_connectionStringName)); var updated = altClientList.FirstOrDefault(c => c.LastName == "Appleseed"); Assert.True(updated != null && updated.LastName == "Appleseed"); }
public void Removes_Item_From_List_And_Store() { // Just in case: _clients.Clear(); var newClient = new Client() { LastName = "Atten", FirstName = "John", Email = "*****@*****.**" }; _clients.Add(newClient); int firstCount = _clients.Count(); // Open a new instance, to see if the item was added to the backing store as well: var altClientList = new BiggyList<Client>(_clientStore); var deleteMe = altClientList.FirstOrDefault(); altClientList.Remove(deleteMe); Assert.True(firstCount > 0 && altClientList.Count() == 0); }
public static void Run() { var sw = new Stopwatch(); Console.WriteLine("==========================================================="); Console.WriteLine("Postgres - SOME FANCY QUERYING"); Console.WriteLine("==========================================================="); var _db = new PGCache(_connectionStringName); IBiggy<Artist> _artists; IBiggy<Album> _albums; IBiggy<Track> _tracks; Console.WriteLine("Loading up Artists from Chinook..."); sw.Start(); _artists = new BiggyList<Artist>(new PGStore<Artist>(_db)); sw.Stop(); Console.WriteLine("\tLoaded {0} Artist records in {1} ms", _artists.Count(), sw.ElapsedMilliseconds); Console.WriteLine("Loading up Albums from Chinook..."); sw.Reset(); sw.Start(); _albums = new BiggyList<Album>(new PGStore<Album>(_db)); sw.Stop(); Console.WriteLine("\tLoaded {0} Albums in {1} ms", _artists.Count(), sw.ElapsedMilliseconds); Console.WriteLine("Loading up tracks from Chinook..."); sw.Reset(); sw.Start(); _tracks = new BiggyList<Track>(new PGStore<Track>(_db)); sw.Stop(); Console.WriteLine("\tLoaded {0} Tracks in {1} ms", _tracks.Count(), sw.ElapsedMilliseconds); Console.WriteLine("Grab the record for AC/DC..."); sw.Reset(); sw.Start(); var acdc = _artists.FirstOrDefault(a => a.Name == "AC/DC"); sw.Stop(); Console.WriteLine("\tFound AC/DC from memory in {0} ms", sw.ElapsedMilliseconds); Console.WriteLine("Find all the albums by AC/DC ..."); sw.Reset(); sw.Start(); var acdcAlbums = _albums.Where(a => a.ArtistId == acdc.ArtistId); sw.Stop(); Console.WriteLine("\tFound All {0} AC/DC albums from memory in {1} ms", acdcAlbums.Count(), sw.ElapsedMilliseconds); Console.WriteLine("Find all the Tracks from Albums by AC/DC ..."); sw.Reset(); sw.Start(); var acdcTracks = from t in _tracks join a in acdcAlbums on t.AlbumId equals a.AlbumId select t; sw.Stop(); Console.WriteLine("\tFound All {0} tracks by ACDC using in-memory JOIN in {1} ms:", acdcTracks.Count(), sw.ElapsedMilliseconds); foreach (var track in acdcTracks) { Console.WriteLine("\t-{0}", track.Name); } Console.WriteLine(Environment.NewLine); Console.WriteLine("==========================================================="); Console.WriteLine("POSTGES - BASIC CRUD OPERATIONS"); Console.WriteLine("==========================================================="); IBiggy<Customer> _customers; sw.Reset(); Console.WriteLine("Loading up customers from Chinook..."); sw.Start(); _customers = new BiggyList<Customer>(new PGStore<Customer>(_db)); sw.Stop(); Console.WriteLine("\tLoaded {0} records in {1}ms", _customers.Count(), sw.ElapsedMilliseconds); sw.Reset(); Console.WriteLine("INSERTING a NEW Customer into Chinook..."); var newCustomer = new Customer() { LastName = "Atten", FirstName = "John", Email = "*****@*****.**" }; sw.Start(); _customers.Add(newCustomer); sw.Stop(); Console.WriteLine("\tWrote 1 record for a new count of {0} records in {1} ms", _customers.Count(), sw.ElapsedMilliseconds); sw.Reset(); Console.WriteLine("UPDATING the new Customer record in Chinook..."); newCustomer.FirstName = "Fred"; sw.Start(); _customers.Update(newCustomer); sw.Stop(); Console.WriteLine("\tUpdated 1 record for a new count of {0} records in {1} ms", _customers.Count(), sw.ElapsedMilliseconds); sw.Reset(); Console.WriteLine("DELETE the new Customer record in Chinook..."); sw.Start(); _customers.Remove(newCustomer); sw.Stop(); Console.WriteLine("\tDeleted 1 record for a new count of {0} records in {1} ms", _customers.Count(), sw.ElapsedMilliseconds); Console.WriteLine(Environment.NewLine); Console.WriteLine("==========================================================="); Console.WriteLine("POSTGES - BULK INSERTS AND DELETIONS"); Console.WriteLine("==========================================================="); Console.WriteLine("Creating Test Table..."); if(_db.TableExists("client")) { _db.DropTable("client"); } var columnDefs = new List<string>(); columnDefs.Add("client_id serial PRIMARY KEY NOT NULL"); columnDefs.Add("last_name Text NOT NULL"); columnDefs.Add("first_name Text NOT NULL"); columnDefs.Add("email Text NOT NULL"); _db.CreateTable("client", columnDefs); IBiggy<Client> _clients; sw.Reset(); int INSERT_QTY = 10000; Console.WriteLine("BULK INSERTING {0} client records in Chinook...", INSERT_QTY); _clients = new BiggyList<Client>(new PGStore<Client>(_db)); var inserts = new List<Client>(); for (int i = 0; i < INSERT_QTY; i++) { inserts.Add(new Client() { LastName = string.Format("Atten {0}", i.ToString()), FirstName = "John", Email = "*****@*****.**" }); } sw.Start(); var inserted = _clients.Add(inserts); sw.Stop(); Console.WriteLine("\tInserted {0} records in {1} ms", inserted.Count(), sw.ElapsedMilliseconds); sw.Reset(); Console.WriteLine("Loading up Bulk inserted CLients from Chinook..."); sw.Start(); _clients = new BiggyList<Client>(new PGStore<Client>(_db)); sw.Stop(); Console.WriteLine("\tLoaded {0} records in {1}ms", _clients.Count(), sw.ElapsedMilliseconds); sw.Reset(); Console.WriteLine("DELETING added records from Chinook..."); var toRemove = _clients.Where(x => x.Email == "*****@*****.**"); sw.Start(); var removed = _clients.Remove(toRemove.ToList()); sw.Stop(); Console.WriteLine("\tDeleted {0} records in {1}ms", removed.Count(), sw.ElapsedMilliseconds); }
public void Updates_Item_In_List_And_Store_With_Equals_Override() { var overrideWidgetList = new BiggyList<OverrideWidget>(new JsonStore<OverrideWidget>()); overrideWidgetList.Clear(); overrideWidgetList.Add(new OverrideWidget { SKU = "001", Name = "Test widget 1", Price = 2.00M }); var updatedItem = new OverrideWidget { SKU = "001", Name = "UPDATED", Price = 2.00M }; overrideWidgetList.Update(updatedItem); // Reload the list: overrideWidgetList = new BiggyList<OverrideWidget>(new JsonStore<OverrideWidget>()); // Grab from the list: var updatedInList = overrideWidgetList.FirstOrDefault(w => w.Name == "UPDATED"); // Make sure updated in both: Assert.True(updatedInList.Name == "UPDATED"); }
public void Biggylist_Removes_Single_Item_From_Json_Store() { var propertyList = new BiggyList<Property>(_propertyStore); int initialCount = propertyList.Count; var newProperty = new Property { Id = 1, Name = "John's High-End Apartments", Address = "16 Property Parkway, Portland, OR 97204" }; propertyList.Add(newProperty); int addedItemId = newProperty.Id; // Just to be sure, reload from backing store and check what was added: propertyList = new BiggyList<Property>(_propertyStore); var addedProperty = propertyList.FirstOrDefault(p => p.Id == addedItemId); bool isAddedProperly = addedProperty.Name.Contains("High-End"); int qtyAdded = propertyList.Count; // Delete: var foundProperty = propertyList.FirstOrDefault(); propertyList.Remove(foundProperty); propertyList = new BiggyList<Property>(_propertyStore); int remaining = propertyList.Count; Assert.IsTrue(isAddedProperly && qtyAdded == 1 && remaining == 0); }