public static void GetStatsFromBF4(TextWriter log) { var sut = new BF4StatsApi(); var result = sut.GetOnlinePlayers().Result; using (var context = new StatsContext()) { context.PlatformStats.AddRange(result); context.SaveChanges(); } }
public void BF4_Stats_ToDatabase() { var sut = new BF4StatsApi(); var result = sut.GetOnlinePlayers().Result; using (var context = new StatsContext()) { context.PlatformStats.AddRange(result); context.SaveChanges(); } }
public ActionResult Create(RaspberryCreateViewModel newModel) { if (!ModelState.IsValid) { return(View("Create", newModel)); } try { var newEntity = new Raspberry(); newEntity.Name = newModel.Name; newEntity.location = newModel.Location; newEntity.IPadress = newModel.IPadress; newEntity.RaspberryId = Guid.NewGuid(); _context.Raspberrys.Add(newEntity); _context.SaveChanges(); return(RedirectToAction(nameof(Index))); } catch { return(View("Create", newModel)); } }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env, StatsContext context) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } var optionsBuilder = new DbContextOptionsBuilder <StatsContext>(); optionsBuilder.UseSqlite("Data Source=stats.db"); //context.Database.Migrate(); context.Database.EnsureCreated(); // seeding the DB with empty keys (having value of 0) var keys = new List <string>() { "lines", "smells", "files", "repos" }; foreach (var key in keys) { var entry = context.Stats.FirstOrDefault(k => k.key == key); if (entry == null) { context.Stats.Add(new Stat { key = key, value = 0 }); context.SaveChanges(); } } app.UseHttpsRedirection(); app.UseRouting(); app.UseCors(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); }
// Not actual test. Routine to fill database for perfomance testing //[Fact] public void FillDatabase() { var serverCount = 10000; var matchesCount = 100 * 2; var daysCount = 14 * 2; var usersCount = 1000000; var startDay = new DateTime(2018, 5, 1); var random = new Random(); var fileName = @".\test.sqlite"; var options = new DbContextOptionsBuilder(); options.UseSqlite($"Filename={fileName}"); File.Delete(fileName); using (var db = new StatsContext(options.Options)) { db.Database.EnsureCreated(); using (db.Database.BeginTransaction()) { db.Endpoints.AddRange(Enumerable.Range(0, serverCount - 1).Select(i => new Endpoint { Id = $"Details:{i}", GameModes = "", Name = $"Endpoint Name {i}" })); db.SaveChanges(); db.Database.CommitTransaction(); } } for (var endpoint = 0; endpoint < serverCount; endpoint++) { var days = random.Next(daysCount); for (var day = 1; day <= days; day++) { var matches = random.Next(matchesCount); using (var db = new StatsContext(options.Options)) { using (db.Database.BeginTransaction()) { db.Matches.AddRange(Enumerable.Range(0, matches).Select(x => new Match { EndpointId = $"Details:{endpoint}", FragLimit = random.Next(30) + 1, GameMode = $"DM{random.Next(10)}", Map = $"Map{random.Next(100)}", TimeElapsed = 30.2F, TimeLimit = random.Next(100) + 1, Timestamp = startDay.AddDays(day).AddMinutes(random.Next(60 * 23)), Scoreboard = Enumerable.Range(0, random.Next(100)).Select(p => new Scoreboard { Name = $"User{random.Next(usersCount)}", Deaths = random.Next(100), Frags = random.Next(100), Kills = random.Next(100), Rating = (float)p } ).ToArray() } )); db.SaveChanges(); db.Database.CommitTransaction(); } } } } }
public void Post([FromBody] Player player) { _db.Players.Add(player); _db.SaveChanges(); }
public async Task Run() { _logger.LogInformation("RaspberrySyncJob started"); // load all raspberry from database and loop // foreach => _context.Raspberry foreach (var raspy in _context.Raspberrys.AsNoTracking()) { var ipaddress = raspy.IPadress; var spezificDate = _context.MeasurePoints.OrderByDescending(x => x.Date).FirstOrDefault(); string Date = spezificDate.Date.ToString("yyyy-MM-dd hh:mm:ss"); string url = "http://" + ipaddress + ":8080/DataSince/" + Date; // Raspberry.IdAdress => $"{http://{idaddress}/} //string url = "http://" + ipaddress + ":8080"; // HttpClient HttpClient client = new HttpClient(); HttpResponseMessage response = await client.GetAsync(url); response.EnsureSuccessStatusCode(); // response => json string json = await response.Content.ReadAsStringAsync(); // json => Deserialize to Object (Newtonsoft.Json) => JsonConverter.DeserializeObject<OBJECT>(json) var raspberry = JsonConvert.DeserializeObject <List <RaspyData> >(json); List <RaspyData> SortedList = raspberry.OrderByDescending(o => o.Datum).ToList(); foreach (var newMeasurePoint in SortedList) { var date = Convert.ToDateTime(newMeasurePoint.Datum); var mp = _context .MeasurePoints .SingleOrDefault( x => x.Date == date && x.Raspberry.IPadress == raspy.IPadress); if (mp == null) { var entity = new MeasurePoint(); entity.MeasurePointId = Guid.NewGuid(); entity.Date = DateTime.Parse(newMeasurePoint.Datum); entity.Humidity = Decimal.Parse(newMeasurePoint.Humidity, CultureInfo.InvariantCulture); entity.Temp = Decimal.Parse(newMeasurePoint.Temperatur, CultureInfo.InvariantCulture); entity.RaspberryId = raspy.RaspberryId; _context.MeasurePoints.Add(entity); } } } try { _context.SaveChanges(); } catch (DbUpdateException ex) { _logger.LogError("Failed during save MeasurePoints", ex); throw; } _logger.LogInformation("RaspberrySyncJob stoped"); }