public void Rebuild_Change_Culture_Error() { using (var file = new TempFile()) using (var db = new LiteDatabase(file.Filename)) { // remove string comparer ignore case db.Rebuild(new RebuildOptions { Collation = new Collation("en-US/None") }); // insert 2 documents with different ID in case sensitive db.GetCollection("col1").Insert(new BsonDocument[] { new BsonDocument { ["_id"] = "ana" }, new BsonDocument { ["_id"] = "ANA" } }); // try migrate to ignorecase this.Invoking(x => { db.Rebuild(new RebuildOptions { Collation = new Collation("en-US/IgnoreCase") }); }).Should().Throw <LiteException>(); // test if current pragma still with collation none db.Pragma("COLLATION").AsString.Should().Be("en-US/None"); } }
public NuGetService(ICacheProvider cacheProvider, ILogger logger) { if (cacheProvider == null) { throw new ArgumentNullException(nameof(cacheProvider)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } _cache = cacheProvider; _logger = logger; _db = new LiteDatabase($"Filename={_dbPath};Upgrade=true;"); _db.Pragma("UTC_DATE", true); _packageSourceRepo = new EntityRepository <PackageSource>(_db, TimeSpan.FromDays(7)); _favouriteRepo = new EntityRepository <FavouritePackage>(_db, TimeSpan.MaxValue); _recentRepo = new EntityRepository <RecentPackage>(_db, TimeSpan.MaxValue); _retryPolicy = Policy.Handle <WebException>() .Or <HttpRequestException>() .Or <TaskCanceledException>() .WaitAndRetryAsync ( retryCount: 2, sleepDurationProvider: retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)) ); }
public async Task Transaction_Write_Lock_Timeout() { var data1 = DataGen.Person(1, 100).ToArray(); var data2 = DataGen.Person(101, 200).ToArray(); using (var db = new LiteDatabase("filename=:memory:")) { // small timeout db.Pragma(Pragmas.TIMEOUT, 1); var person = db.GetCollection <Person>(); // init person collection with 100 document person.Insert(data1); var taskASemaphore = new SemaphoreSlim(0, 1); var taskBSemaphore = new SemaphoreSlim(0, 1); // task A will open transaction and will insert +100 documents // but will commit only 2s later var ta = Task.Run(() => { db.BeginTrans(); person.Insert(data2); taskBSemaphore.Release(); taskASemaphore.Wait(); var count = person.Count(); count.Should().Be(data1.Length + data2.Length); db.Commit(); }); // task B will try delete all documents but will be locked during 1 second var tb = Task.Run(() => { taskBSemaphore.Wait(); db.BeginTrans(); person .Invoking(personCol => personCol.DeleteMany("1 = 1")) .Should() .Throw <LiteException>() .Where(ex => ex.ErrorCode == LiteException.LOCK_TIMEOUT); taskASemaphore.Release(); }); await Task.WhenAll(ta, tb); } }
/// <summary> /// Devuelve la información de idioma de la base de datos /// </summary> /// <returns></returns> public CultureInfo GetCultureInfoFromDB() { var collation = LiteDatabase.Pragma(Pragmas.COLLATION); var split = ((string)collation.RawValue).Split('/'); CultureInfo culture = CultureInfo.InvariantCulture; if (split.Length == 2) { culture = new CultureInfo(split[0], false); } return(culture); }
public static (int MinG, int MaxG, int MinR, int MaxR, int ProgressG, int ProgressR) GetMinMax(string _ID) { var _db = new LiteDatabase("Filename = " + ScoreTrackerController.ScoreTrackerDB + "; connection = Shared"); _db.Pragma("UTC_DATE", true); var col = _db.GetCollection <Classes.Playerinfo>("_" + _ID); col.EnsureIndex(x => x.timestampu); var _resultMinG = col.Min(x => x.rank); var _resultMinR = col.Min(x => x.countryRank); var _resultMaxG = col.Max(x => x.rank); var _resultMaxR = col.Max(x => x.countryRank); return(_resultMinG, _resultMaxG, _resultMinR, _resultMaxR, _resultMinG - _resultMaxG, _resultMinR - _resultMaxR); }
public static List <string> GetComparedFromDB() { var _db = new LiteDatabase("Filename = " + ScoreTrackerController.ScoreTrackerDB + "; connection = Shared"); _db.Pragma("UTC_DATE", true); var col = _db.GetCollection <Classes.Playerinfo>("profiles"); col.EnsureIndex(x => x.playerId); var results = col.Find(x => x.compare); List <string> _compared = new List <string>(); foreach (var item in results) { _compared.Add(item.playerId); } return(_compared); }
public static void SaveProfiles() { var _db = new LiteDatabase("Filename = " + ScoreTrackerController.ScoreTrackerDB + "; connection = Shared"); _db.Pragma("UTC_DATE", true); var _timestampu = DateTime.UtcNow.Ticks; var _timestamp = new DateTime(_timestampu).ToString(); var col = _db.GetCollection <Classes.Playerinfo>("profiles"); col.EnsureIndex(x => x.playerId); foreach (var item in ScoreTrackerController.profileList) { item.timestamp = _timestamp; item.timestampu = _timestampu.ToString(); col.Upsert(item.playerId, item); } _db.Dispose(); }
public static List <Classes.Playerinfo> GetProfilesAsList() { var _db = new LiteDatabase("Filename = " + ScoreTrackerController.ScoreTrackerDB + "; connection = Shared"); _db.Pragma("UTC_DATE", true); var col = _db.GetCollection <Classes.Playerinfo>("profiles"); col.EnsureIndex(x => x.playerId); var results = col.FindAll(); List <Classes.Playerinfo> _profileList = new List <Classes.Playerinfo>(); foreach (var item in results) { _profileList.Add(item); } _db.Dispose(); return(_profileList); }
private void Init() { var connectionString = $"Filename={Path.Combine(this.DataDir, "DatabaseV3.db")};connection=shared"; Db = new LiteDB.LiteDatabase(connectionString); Db.Pragma("UTC_DATE", true); DbSymbolsMetaData = Db.GetCollection <SymbolHistoryMetaDataInternal>("SymbolsMetaData"); if (DbSymbolsMetaData.FindOne(e => true) == null) { Update1(); Update2(); } SymbolsMetaData = DbSymbolsMetaData.FindAll().ToDictionary(md => md.Id); ValidateSymbolsMetadata(); }
public void Execute() { if (_file.Delete) { this.DeleteFiles(); } _db = new LiteDatabase(_file.Filename); _db.Pragma("TIMEOUT", (int)_file.Timeout.TotalSeconds); foreach (var setup in _file.Setup) { _db.Execute(setup); } // create all threads this.CreateThreads(); // start report thread var t = new Thread(() => this.ReportThread()); t.Name = "REPORT"; t.Start(); }
public NuGetService( ICacheService cacheProvider, IHttpHandlerService httpHandlerService, IPreferences preferences, IVersionTracking versionTracking, IConnectivity connectivity, IFileSystem fileSystem, ILogger logger) { _cache = cacheProvider ?? throw new ArgumentNullException(nameof(cacheProvider)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _preferences = preferences; _versionTracking = versionTracking; _connectivity = connectivity; _httpClient = new HttpClient(httpHandlerService.GetNativeHandler()); var dbPath = Path.Combine(fileSystem.AppDataDirectory, "nugets.db"); _db = new LiteDatabase($"Filename={dbPath};Upgrade=true;"); _db.Pragma("UTC_DATE", true); _packageSourceRepo = new EntityRepository <PackageSource>(_db, TimeSpan.FromDays(7), _connectivity); _favouriteRepo = new EntityRepository <FavouritePackage>(_db, TimeSpan.MaxValue, _connectivity); _recentRepo = new EntityRepository <RecentPackage>(_db, TimeSpan.MaxValue, _connectivity); _retryPolicy = Policy.Handle <WebException>() .Or <HttpRequestException>() .WaitAndRetryAsync ( retryCount: 2, sleepDurationProvider: retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)) ); }