コード例 #1
0
ファイル: AtemRepository.cs プロジェクト: LibAtem/AtemUI
        public Tuple <bool, IReadOnlyList <AtemDevice> > AddDevice(string address, int port)
        {
            var id = AtemDeviceExt.Id(address, port);

            lock (_devices)
            {
                if (_devices.TryGetValue(id, out AtemDevice device))
                {
                    device.Remember = true;
                    device.Enabled  = true;


                    _dbDevices.Upsert(id, device);

                    // startup connection
                    SetupConnection(device);
                }
                else
                {
                    var doc = _devices[id] = new AtemDevice(new AtemDeviceInfo(id, "", DateTime.MinValue, address, port, new List <string>()))
                    {
                        Remember = true, // Remember anything created manually
                        Enabled  = true, // Enable for connections
                    };

                    _dbDevices.Upsert(id, doc);

                    // startup connection
                    SetupConnection(doc);
                }

                return(Tuple.Create(true, ListDevices()));
            }
        }
コード例 #2
0
 protected override void ProcessRecord()
 {
     if (!Connection.CollectionExists(Collection))
     {
         WriteWarning($"Collection\t['{Collection}'] does not exist");
     }
     else
     {
         Table = Connection.GetCollection(Collection);
         try
         {
             if (ParameterSetName == "ID")
             {
                 Table.Upsert(ID, Document);
             }
             else if (ParameterSetName == "Array")
             {
                 Table.Upsert(BsonDocumentArray);
             }
             else
             {
                 Table.Upsert(Document);
             }
         }
         catch (Exception)
         {
             throw;
         }
     }
 }
コード例 #3
0
        public int Upsertion()
        {
            var count = _fileMetaCollection.Upsert(_data);

            DatabaseInstance.Checkpoint();
            return(count);
        }
コード例 #4
0
 public async ValueTask PreLoad()
 {
     foreach (var layer in layers.Values)
     {
         var entries = EntryDataDto.Convert(layer.GetPreloadEntries());
         collection.Upsert(entries);
     }
 }
コード例 #5
0
        public bool Save(BusinessCard model, bool references = true)
        {
            var upserted = false;

            using (var scope = TransactionScopeOption.Required.CreateTransactionScope())
            {
                upserted = cards.Upsert(model);
                scope.Complete();
            }
            return(upserted);
        }
コード例 #6
0
        private void UpdateData(ILiteCollection <Album> collection)
        {
            logger.LogInformation("Updating the data ...");

            var updatedAlbum = collection
                               .Include(x => x.Songs)
                               .FindOne(x => x.Title == "Issues");

            updatedAlbum.Year = 2021;
            updatedAlbum.Songs.Add(new Song
            {
                TrackNumber = 3,
                Title       = "Trash",
                Length      = new TimeSpan(0, 3, 27),
            });

            collection.Update(updatedAlbum);

            // Partial update of multiple documents.
            collection.UpdateMany(album => new Album {
                Title = "Updated: " + album.Title
            }, album => album.Year >= 2020);

            // Upsert
            var docForUpsert = new Album
            {
                Year   = 1999,
                Title  = "Wishmaster",
                Artist = "Nightwish",

                Songs = new List <Song>
                {
                    new()
                    {
                        TrackNumber = 1,
                        Title       = "She Is My Sin",
                        Length      = new TimeSpan(0, 4, 46),
                    },
                },
            };

            collection.Upsert(docForUpsert);

            docForUpsert.Year = 2000;
            docForUpsert.Songs.Add(new()
            {
                TrackNumber = 2,
                Title       = "02 - The Kinslayer",
                Length      = new TimeSpan(0, 3, 58),
            });

            // This works, because first upsert has filled Id property in the document.
            collection.Upsert(docForUpsert);
        }
コード例 #7
0
            public void Set(ProviderSettingsType type, bool value)
            {
                var doc = new BsonDocument {
                    ["_id"]   = (int)type,
                    ["value"] = value
                };

                _collection.Upsert(doc);
            }
コード例 #8
0
        public Task <bool> SetAdminInfo(Login loginInfo)
        {
            var tempLogin = _loginCollection.FindAll().FirstOrDefault();

            if (tempLogin != null)
            {
                tempLogin.UserName = loginInfo.UserName;
                tempLogin.Password = KiwiCryptography.HashPassword(loginInfo.Password);

                return(Task.FromResult(_loginCollection.Upsert(tempLogin)));
            }

            return(Task.FromResult(_loginCollection.Upsert(loginInfo)));
        }
コード例 #9
0
        public virtual void Update(T entity)
        {
            entity.CreatedDate = DateTime.Now;
            entity.UpdatedDate = DateTime.Now;

            Collection.Upsert(entity);
        }
コード例 #10
0
 public void AddFavorite(string objectId, string category)
 {
     myStoredFavorites.Upsert(new StoredFavorite {
         AddedOn = DateTime.UtcNow, Category = category, ObjectId = objectId
     });
     OnCategoryContentsChanged?.Invoke(category);
 }
コード例 #11
0
        public async Task <Manifest> GetManifest()
        {
            Manifest latest = _manifest.Find(r => true).OrderByDescending(r => r.DateTime).FirstOrDefault();

            if (latest != null && !(DateTime.Now - latest.DateTime >= TimeSpan.FromMinutes(15)))
            {
                return(latest);
            }

            try
            {
                if (latest != null && GetCommitHash() == await GetGithubHash())
                {
                    return(latest);
                }
            }
            catch (RateLimitExceededException)
            {
                // Github throttle error
            }

            latest = await FetchManifest();

            _manifest.Upsert(latest);

            return(latest);
        }
コード例 #12
0
        /// <summary>
        /// Upserts a record into the local db collection
        /// </summary>
        /// <param name="runId"></param>
        /// <param name="schemaKeys"></param>
        /// <param name="recordMap"></param>
        /// <param name="recordKeysMap"></param>
        /// <param name="realtimeRecordsCollection"></param>
        /// <returns>boolean indicating if record changed</returns>
        private static bool UpsertRealTimeRecord(string runId, List <string> schemaKeys,
                                                 Dictionary <string, object> recordMap,
                                                 Dictionary <string, object> recordKeysMap, ILiteCollection <RealTimeRecord> realtimeRecordsCollection)
        {
            // build local db entry
            var recordId   = GetRecordKeyEntry(schemaKeys, recordMap);
            var recordHash = GetRecordHash(recordMap);

            // Create new real time record
            var realTimeRecord = new RealTimeRecord
            {
                Id             = recordId,
                RunId          = runId,
                RecordKeysMap  = recordKeysMap,
                RecordDataHash = recordHash
            };

            // get previous real time record
            var previousRealTimeRecord =
                realtimeRecordsCollection.FindById(GetRecordKeyEntry(schemaKeys, recordMap));

            // upsert new record into db
            realtimeRecordsCollection.Upsert(realTimeRecord);

            return(previousRealTimeRecord == null ||
                   previousRealTimeRecord.RecordDataHash != realTimeRecord.RecordDataHash);
        }
コード例 #13
0
 public void SaveAccountMappings(IEnumerable <AccountMapping> accounts)
 {
     foreach (var accountMapping in accounts)
     {
         _accountMappings.Upsert(accountMapping);
     }
 }
コード例 #14
0
ファイル: SaveVnDataToDb.cs プロジェクト: micah686/VnManager
        /// <summary>
        /// Save Vn Characters to db
        /// </summary>
        /// <param name="characters"></param>
        /// <param name="vnid"></param>
        public static void SaveVnCharacters(ICollection <Character> characters, uint vnid)
        {
            try
            {
                if (characters == null || characters.Count < 1)
                {
                    return;
                }
                var cred = CredentialManager.GetCredentials(App.CredDb);
                if (cred == null || cred.UserName.Length < 1)
                {
                    return;
                }
                using (var db = new LiteDatabase($"{App.GetDbStringWithoutPass}'{cred.Password}'"))
                {
                    var dbCharInfo = db.GetCollection <VnCharacterInfo>(DbVnCharacter.VnCharacter.ToString());
                    ILiteCollection <VnCharacterTraits> dbCharTraits = db.GetCollection <VnCharacterTraits>(DbVnCharacter.VnCharacter_Traits.ToString());

                    if (characters.Count > 0)
                    {
                        List <VnCharacterInfo>   vnCharactersList      = new List <VnCharacterInfo>();
                        List <VnCharacterTraits> vnCharacterTraitsList = new List <VnCharacterTraits>();
                        foreach (Character vnCharacter in characters)
                        {
                            var prevVnCharacter = dbCharInfo.Query().Where(x => x.CharacterId == vnCharacter.Id);
                            var character       = prevVnCharacter.FirstOrDefault() ?? new VnCharacterInfo();

                            character.VnId        = vnid;
                            character.CharacterId = vnCharacter.Id;
                            character.Name        = vnCharacter.Name;
                            character.Original    = vnCharacter.OriginalName;
                            character.Gender      = vnCharacter.Gender.ToString();
                            character.BloodType   = vnCharacter.BloodType.ToString();
                            character.Age         = vnCharacter.Age.ToString();
                            character.Birthday    = SimpleDateConverter.ConvertSimpleDate(vnCharacter.Birthday);
                            character.Aliases     = CsvConverter.ConvertToCsv(vnCharacter.Aliases);
                            character.Description = vnCharacter.Description;
                            character.ImageLink   = !string.IsNullOrEmpty(vnCharacter.Image) ? vnCharacter.Image : string.Empty;
                            character.ImageRating = vnCharacter.ImageRating;
                            character.Bust        = Convert.ToInt32(vnCharacter.Bust, CultureInfo.InvariantCulture);
                            character.Waist       = Convert.ToInt32(vnCharacter.Waist, CultureInfo.InvariantCulture);
                            character.Hip         = Convert.ToInt32(vnCharacter.Hip, CultureInfo.InvariantCulture);
                            character.Height      = Convert.ToInt32(vnCharacter.Height, CultureInfo.InvariantCulture);
                            character.Weight      = Convert.ToInt32(vnCharacter.Weight, CultureInfo.InvariantCulture);
                            vnCharactersList.Add(character);

                            vnCharacterTraitsList.AddRange(FormatVnCharacterTraits(vnCharacter, dbCharTraits));
                        }

                        dbCharInfo.Upsert(vnCharactersList);
                        dbCharTraits.Upsert(vnCharacterTraitsList);
                    }
                }
            }
            catch (Exception e)
            {
                App.Logger.Error(e, "Failed to save VnCharacters");
                SentryHelper.SendException(e, null, SentryLevel.Error);
            }
        }
コード例 #15
0
 public void SetSetting(ISetting value)
 {
     if (_disposed)
     {
         throw new ObjectDisposedException(GetType().Name);
     }
     _settings.Upsert((Setting)value);
 }
コード例 #16
0
 public override void Save(Portfolio portfolio)
 {
     _portfolios.Upsert(portfolio);
     foreach (var item in portfolio.Children)
     {
         Save(item);
     }
 }
コード例 #17
0
ファイル: AbstractRepo.cs プロジェクト: AudioAdventurer/cAmp
        public void Save(T obj)
        {
            if (obj.Id.Equals(Guid.Empty))
            {
                throw new Exception("Guid.Empty used as identifier");
            }

            Collection.Upsert(obj);
        }
コード例 #18
0
        public void UpdatePreference(string name, object value)
        {
            var preference = new PreferenceValue {
                Name  = name,
                Value = value
            };

            _collection.Upsert(preference);
        }
コード例 #19
0
        public void SaveEntities <TEntity>(IEnumerable <TEntity> entities)
        {
            using (LiteDatabase db = new LiteDatabase(_appSettings.LightDbConnection))
            {
                ILiteCollection <TEntity> col = db.GetCollection <TEntity>(typeof(TEntity).Name);

                col.Upsert(entities);
            }
        }
コード例 #20
0
        public Task SavePost(Post post)
        {
            post.LastModified = DateTime.Now;

            var taskResult = Task.FromResult(_postCollection.Upsert(post));

            UpdateCache();

            return(taskResult);
        }
コード例 #21
0
        /// <summary>
        /// Set the specified cacheKey, cacheValue and expiration.
        /// </summary>
        /// <returns>The set.</returns>
        /// <param name="cacheKey">Cache key.</param>
        /// <param name="cacheValue">Cache value.</param>
        /// <param name="expiration">Expiration.</param>
        /// <typeparam name="T">The 1st type parameter.</typeparam>
        public override void BaseSet <T>(string cacheKey, T cacheValue, TimeSpan expiration)
        {
            ArgumentCheck.NotNullOrWhiteSpace(cacheKey, nameof(cacheKey));
            ArgumentCheck.NotNull(cacheValue, nameof(cacheValue), _options.CacheNulls);
            ArgumentCheck.NotNegativeOrZero(expiration, nameof(expiration));

            if (MaxRdSecond > 0)
            {
                var addSec = new Random().Next(1, MaxRdSecond);
                expiration.Add(new TimeSpan(0, 0, addSec));
            }
            _cache.Upsert(new CacheItem
            {
                cachekey   = cacheKey,
                name       = _name,
                cachevalue = Newtonsoft.Json.JsonConvert.SerializeObject(cacheValue),
                expiration = DateTimeOffset.UtcNow.Add(expiration).ToUnixTimeSeconds()
            });
        }
コード例 #22
0
        public async Task LoadImageAsync(string url, Action <Texture2D?> onDone)
        {
            try
            {
                if (!myFileDatabase.FileStorage.Exists(url))
                {
                    onDone(null);
                    return;
                }

                await Task.Run(() => { }).ConfigureAwait(false);

                using var imageStream = myFileDatabase.FileStorage.OpenRead(url);
                using var image       = await Image.LoadAsync <Rgba32>(imageStream).ConfigureAwait(false);

                var newImageInfo = new StoredImageInfo {
                    Id = url, LastAccessed = DateTime.UtcNow
                };
                myImageInfos.Upsert(newImageInfo);

                await TaskUtilities.YieldToMainThread();

                try
                {
                    onDone(CreateTextureFromImage(image));
                }
                catch (Exception ex)
                {
                    MelonLogger.Error($"Exception in onDone callback: {ex}");
                }
            }
            catch (Exception ex)
            {
                if (MelonDebug.IsEnabled())
                {
                    MelonLogger.Warning($"Exception in image load, will delete offending image: {ex}");
                }
                myFileDatabase.FileStorage.Delete(url);
                myImageInfos.Delete(url);
                onDone(AssetsHandler.PreviewLoading.texture);
            }
        }
コード例 #23
0
        public T UpdateData <T>(T data) where T : IdentifiableData
        {
            using (LiteDatabase db = new LiteDatabase(_location))
            {
                ILiteCollection <T> servers = db.GetCollection <T>(typeof(T).Name);

                servers.DeleteMany(x => x.Id == data.Id);
                servers.Upsert(data);
                return(data);
            }
        }
コード例 #24
0
        public IndexSortAndFilterTest()
        {
            _tempFile   = new TempFile();
            _database   = new LiteDatabase(_tempFile.Filename);
            _collection = _database.GetCollection <Item>("items");

            _collection.Upsert(new Item()
            {
                Id = "C", Value = "Value 1"
            });
            _collection.Upsert(new Item()
            {
                Id = "A", Value = "Value 2"
            });
            _collection.Upsert(new Item()
            {
                Id = "B", Value = "Value 1"
            });

            _collection.EnsureIndex("idx_value", x => x.Value);
        }
コード例 #25
0
        /// <summary>
        /// Set the specified cacheKey, cacheValue and expiration.
        /// </summary>
        /// <returns>The set.</returns>
        /// <param name="cacheKey">Cache key.</param>
        /// <param name="cacheValue">Cache value.</param>
        /// <param name="expiration">Expiration.</param>
        /// <typeparam name="T">The 1st type parameter.</typeparam>
        public override void BaseSet <T>(string cacheKey, T cacheValue, TimeSpan expiration)
        {
            ArgumentCheck.NotNullOrWhiteSpace(cacheKey, nameof(cacheKey));
            ArgumentCheck.NotNull(cacheValue, nameof(cacheValue));
            ArgumentCheck.NotNegativeOrZero(expiration, nameof(expiration));

            if (MaxRdSecond > 0)
            {
                var addSec = new Random().Next(1, MaxRdSecond);
                expiration.Add(new TimeSpan(0, 0, addSec));
            }
            var exp = expiration.Ticks / 10000000;

            _cache.Upsert(new CacheItem
            {
                cachekey   = cacheKey,
                name       = _name,
                cachevalue = Newtonsoft.Json.JsonConvert.SerializeObject(cacheValue),
                expiration = expiration.Ticks / 10000000
            });
        }
コード例 #26
0
        public void SaveNonVolatileVars()
        {
            lock (DbLock)
            {
                //save my internal state
                BsonDocument state = new BsonDocument();
                state["_id"]   = "TradingAlgoState";
                state["State"] = Db.Mapper.Serialize(State);

                //Save derived state
                state["DerivedClassState"] = Db.Mapper.Serialize(GetState());

                //save module states
                state["Sentry"]      = Db.Mapper.Serialize(Sentry.GetState());
                state["Allocator"]   = Db.Mapper.Serialize(Allocator.GetState());
                state["Executor"]    = Db.Mapper.Serialize(Executor.GetState());
                state["RiskManager"] = Db.Mapper.Serialize(RiskManager.GetState());

                Db.GetCollection("State").Upsert(state);

                foreach (var symData in SymbolsData.Values)
                {
                    Db.GetCollection <SymbolData>("SymbolsData").Upsert(symData);
                }

                Db.BeginTrans();
                foreach (var op in ActiveOperations.Where(op => op.IsChanged))
                {
                    DbActiveOperations.Upsert(op);
                }
                foreach (var op in ClosedOperations.Where(op => op.IsChanged))
                {
                    DbClosedOperations.Upsert(op);
                }
                Db.Commit();

                Db.Checkpoint();
            }
        }
コード例 #27
0
ファイル: HomeViewModel.cs プロジェクト: JaoHundred/ANT
        private void LoadRecommendationFromCache(SettingsPreferences settings
                                                 , ILiteCollection <RecommendationAnimes> recommendationAnimesCollection, RecommendationAnimes recommendationsCache)
        {
            recommendationsCache.Recommendations = recommendationsCache.Recommendations
                                                   .Where(recommendation => !App.liteDB.GetCollection <FavoritedAnime>()
                                                          .Exists(favoritedAnime => recommendation.MalId == favoritedAnime.Anime.MalId))
                                                   .ToList();

            RecommendationAnimes = recommendationsCache;

            HasRecommendations = RecommendationAnimes.Recommendations.Count() != 0;

            recommendationAnimesCollection.Upsert(0, recommendationsCache);
        }
コード例 #28
0
ファイル: ProduceDB.cs プロジェクト: WilsonArmitage/GoGreen
        public int Upsert(Produce produce)
        {
            int returnValue = 0;

            using (var db = new LiteDatabase(_connection))
            {
                ILiteCollection <Produce> col = db.GetCollection <Produce>("produce");

                col.Upsert(produce);

                returnValue = produce.Id;
            }

            return(returnValue);
        }
コード例 #29
0
        public async Task <string> GetGithubHash()
        {
            Reference reference = await _github.Git.Reference.Get(REPOSITORY_OWNER, REPOSITORY_NAME, "heads/master");

            string hash = reference.Object.Sha;

            Repository latest = _repository.Find(r => true).OrderByDescending(r => r.DateTime).FirstOrDefault() ??
                                new Repository();

            latest.CommitHash = hash;
            latest.DateTime   = DateTime.Now;
            _repository.Upsert(latest);

            return(hash);
        }
コード例 #30
0
        public bool SaveEntry <T>(T entry, bool overwrite = false)
        {
            using (var db = new LiteDatabase(_connectionString))
            {
                ILiteCollection <T> collection = db.GetCollection <T>();

                if (overwrite)
                {
                    return(collection.Upsert(entry));
                }
                else
                {
                    var insert = collection.Insert(entry);
                    return(!insert.IsNull);
                }
            }
        }