Exemple #1
0
        IEnumerable <WriteModel <MongoMtgDeck> > CreateDeckUpdatePlan(IDictionary <string, MongoMtgDeck> internalDecks, IEnumerable <IMtgDeck> externalDecks)
        {
            var plan = new LinkedList <WriteModel <MongoMtgDeck> >();

            foreach (var externalDeck in externalDecks)
            {
                if (internalDecks.ContainsKey(externalDeck.Name))
                {
                    var internalDeck = internalDecks[externalDeck.Name];
                    if (DifferencesExist(internalDeck, externalDeck))
                    {
                        var mongoDeck = MongoMtgDeck.FromMtgDeck(externalDeck);
                        mongoDeck._id = internalDeck._id;
                        var replaceOneFilter = _filter.Eq("_id", mongoDeck._id);
                        var newPlan          = new ReplaceOneModel <MongoMtgDeck>(
                            replaceOneFilter,
                            mongoDeck
                            );
                        plan.AddLast(newPlan);
                    }
                }
                else
                {
                    var newPlan = new InsertOneModel <MongoMtgDeck>(MongoMtgDeck.FromMtgDeck(externalDeck));
                    plan.AddLast(newPlan);
                }
            }

            return(plan);
        }
Exemple #2
0
        public void UpdateAllDecks(IEnumerable <IMtgDeck> externalDecks)
        {
            database.DropCollection(MongoCollection);
            EnsureCollectionExists(database);
            var mongoCards = externalDecks.Select(externalDeck => { var deck = MongoMtgDeck.FromMtgDeck(externalDeck); deck.id = CreateUniqueIdForDeck(deck); return(deck); });

            collection.InsertMany(mongoCards);
        }