コード例 #1
0
        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);
        }
コード例 #2
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);
            }
        }
コード例 #3
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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
    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);
    }
コード例 #6
0
        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();
        }
コード例 #7
0
ファイル: BiggyListWithSQL.cs プロジェクト: superted17/biggy
        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");
        }
コード例 #8
0
 public DownloadRecord GetDownloadRecord(string url)
 {
     lock (JsonStore)
     {
         var dRecords = new BiggyList <DownloadRecord>(JsonStore);
         var item     = dRecords.FirstOrDefault(x => x.Url == url);
         return(item);
     }
 }
コード例 #9
0
        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);
        }
コード例 #10
0
    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);
    }
コード例 #11
0
 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);
         }
     }
 }
コード例 #12
0
    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);
    }
コード例 #13
0
 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);
         }
     }
 }
コード例 #14
0
        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);
            }
        }
コード例 #15
0
        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);
        }
コード例 #16
0
        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);
        }
コード例 #17
0
    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);
    }
コード例 #18
0
ファイル: BiggyListWithPG.cs プロジェクト: superted17/biggy
        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);
        }
コード例 #19
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);
    }
コード例 #20
0
ファイル: BiggyListWithPG.cs プロジェクト: superted17/biggy
        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");
        }
コード例 #21
0
        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);
        }
コード例 #22
0
        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");
        }
コード例 #23
0
ファイル: BiggyListWithSQL.cs プロジェクト: WilJoey/biggy
        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");
        }
コード例 #24
0
ファイル: Benchmarks.cs プロジェクト: superted17/biggy
        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);
        }
コード例 #25
0
ファイル: BiggyListWithSQL.cs プロジェクト: WilJoey/biggy
        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");
        }
コード例 #26
0
ファイル: BiggyListWithSQL.cs プロジェクト: WilJoey/biggy
        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);
        }
コード例 #27
0
ファイル: Benchmarks.cs プロジェクト: WilJoey/biggy
        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);
        }
コード例 #28
0
        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");
        }
コード例 #29
0
    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);
    }