Move version statistics to database.

This commit is contained in:
2018-12-21 04:17:14 +00:00
parent 4f445e53c3
commit 94b60395ec
8 changed files with 1463 additions and 18 deletions

View File

@@ -311,6 +311,8 @@
<e p="20181221034941_SeenDevicesStatistics.cs" t="Include" /> <e p="20181221034941_SeenDevicesStatistics.cs" t="Include" />
<e p="20181221040408_OperatingSystemStatistics.Designer.cs" t="Include" /> <e p="20181221040408_OperatingSystemStatistics.Designer.cs" t="Include" />
<e p="20181221040408_OperatingSystemStatistics.cs" t="Include" /> <e p="20181221040408_OperatingSystemStatistics.cs" t="Include" />
<e p="20181221041242_VersionStatistics.Designer.cs" t="Include" />
<e p="20181221041242_VersionStatistics.cs" t="Include" />
<e p="DicContextModelSnapshot.cs" t="Include" /> <e p="DicContextModelSnapshot.cs" t="Include" />
</e> </e>
<e p="Models" t="Include"> <e p="Models" t="Include">
@@ -324,6 +326,7 @@
<e p="OperatingSystem.cs" t="Include" /> <e p="OperatingSystem.cs" t="Include" />
<e p="Partition.cs" t="Include" /> <e p="Partition.cs" t="Include" />
<e p="Report.cs" t="Include" /> <e p="Report.cs" t="Include" />
<e p="Version.cs" t="Include" />
</e> </e>
<e p="bin" t="ExcludeRecursive" /> <e p="bin" t="ExcludeRecursive" />
<e p="obj" t="ExcludeRecursive"> <e p="obj" t="ExcludeRecursive">

View File

@@ -44,7 +44,7 @@ using DiscImageChef.Database.Models;
using Device = DiscImageChef.Devices.Device; using Device = DiscImageChef.Devices.Device;
using MediaType = DiscImageChef.CommonTypes.MediaType; using MediaType = DiscImageChef.CommonTypes.MediaType;
using OperatingSystem = DiscImageChef.Database.Models.OperatingSystem; using OperatingSystem = DiscImageChef.Database.Models.OperatingSystem;
using Version = DiscImageChef.CommonTypes.Interop.Version; using Version = DiscImageChef.Database.Models.Version;
namespace DiscImageChef.Core namespace DiscImageChef.Core
{ {
@@ -82,13 +82,8 @@ namespace DiscImageChef.Core
Synchronized = false, Synchronized = false,
Version = DetectOS.GetVersion() Version = DetectOS.GetVersion()
}); });
CurrentStats = new Stats ctx.Versions.Add(new Version {Value = CommonTypes.Interop.Version.GetVersion(), Synchronized = false});
{ CurrentStats = new Stats();
Versions = new List<NameValueStats>
{
new NameValueStats {name = Version.GetVersion(), Value = 1}
}
};
XmlSerializer xs = new XmlSerializer(AllStats.GetType()); XmlSerializer xs = new XmlSerializer(AllStats.GetType());
StreamReader sr = new StreamReader(Path.Combine(Settings.Settings.StatsPath, "Statistics.xml")); StreamReader sr = new StreamReader(Path.Combine(Settings.Settings.StatsPath, "Statistics.xml"));
AllStats = (Stats)xs.Deserialize(sr); AllStats = (Stats)xs.Deserialize(sr);
@@ -103,13 +98,8 @@ namespace DiscImageChef.Core
Synchronized = false, Synchronized = false,
Version = DetectOS.GetVersion() Version = DetectOS.GetVersion()
}); });
CurrentStats = new Stats ctx.Versions.Add(new Version {Value = CommonTypes.Interop.Version.GetVersion(), Synchronized = false});
{ CurrentStats = new Stats();
Versions = new List<NameValueStats>
{
new NameValueStats {name = Version.GetVersion(), Value = 1}
}
};
} }
else else
{ {
@@ -159,7 +149,8 @@ namespace DiscImageChef.Core
long count = 0; long count = 0;
NameValueStats old = null; NameValueStats old = null;
foreach(NameValueStats nvs in AllStats.Versions.Where(nvs => nvs.name == Version.GetVersion())) foreach(NameValueStats nvs in AllStats.Versions.Where(nvs => nvs.name == CommonTypes
.Interop.Version.GetVersion()))
{ {
count = nvs.Value + 1; count = nvs.Value + 1;
old = nvs; old = nvs;
@@ -169,7 +160,10 @@ namespace DiscImageChef.Core
if(old != null) AllStats.Versions.Remove(old); if(old != null) AllStats.Versions.Remove(old);
count++; count++;
AllStats.Versions.Add(new NameValueStats {name = Version.GetVersion(), Value = count}); AllStats.Versions.Add(new NameValueStats
{
name = CommonTypes.Interop.Version.GetVersion(), Value = count
});
} }
else if(CurrentStats != null) AllStats.Versions = CurrentStats.Versions; else if(CurrentStats != null) AllStats.Versions = CurrentStats.Versions;
@@ -228,7 +222,7 @@ namespace DiscImageChef.Core
WebRequest request = WebRequest.Create("http://discimagechef.claunia.com/api/uploadstats"); WebRequest request = WebRequest.Create("http://discimagechef.claunia.com/api/uploadstats");
((HttpWebRequest)request).UserAgent = ((HttpWebRequest)request).UserAgent =
$"DiscImageChef {typeof(Version).Assembly.GetName().Version}"; $"DiscImageChef {typeof(CommonTypes.Interop.Version).Assembly.GetName().Version}";
request.Method = "POST"; request.Method = "POST";
request.ContentLength = fs.Length; request.ContentLength = fs.Length;
request.ContentType = "application/xml"; request.ContentType = "application/xml";

View File

@@ -53,6 +53,7 @@ namespace DiscImageChef.Database
public DbSet<Media> Medias { get; set; } public DbSet<Media> Medias { get; set; }
public DbSet<DeviceStat> SeenDevices { get; set; } public DbSet<DeviceStat> SeenDevices { get; set; }
public DbSet<OperatingSystem> OperatingSystems { get; set; } public DbSet<OperatingSystem> OperatingSystems { get; set; }
public DbSet<Version> Versions { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{ {

View File

@@ -72,6 +72,8 @@
<Compile Include="Migrations\20181221034941_SeenDevicesStatistics.Designer.cs" /> <Compile Include="Migrations\20181221034941_SeenDevicesStatistics.Designer.cs" />
<Compile Include="Migrations\20181221040408_OperatingSystemStatistics.cs" /> <Compile Include="Migrations\20181221040408_OperatingSystemStatistics.cs" />
<Compile Include="Migrations\20181221040408_OperatingSystemStatistics.Designer.cs" /> <Compile Include="Migrations\20181221040408_OperatingSystemStatistics.Designer.cs" />
<Compile Include="Migrations\20181221041242_VersionStatistics.cs" />
<Compile Include="Migrations\20181221041242_VersionStatistics.Designer.cs" />
<Compile Include="Migrations\DicContextModelSnapshot.cs" /> <Compile Include="Migrations\DicContextModelSnapshot.cs" />
<Compile Include="Models\Command.cs" /> <Compile Include="Models\Command.cs" />
<Compile Include="Models\Device.cs" /> <Compile Include="Models\Device.cs" />
@@ -83,6 +85,7 @@
<Compile Include="Models\OperatingSystem.cs" /> <Compile Include="Models\OperatingSystem.cs" />
<Compile Include="Models\Partition.cs" /> <Compile Include="Models\Partition.cs" />
<Compile Include="Models\Report.cs" /> <Compile Include="Models\Report.cs" />
<Compile Include="Models\Version.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\DiscImageChef.CommonTypes\DiscImageChef.CommonTypes.csproj" /> <ProjectReference Include="..\DiscImageChef.CommonTypes\DiscImageChef.CommonTypes.csproj" />

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,24 @@
using Microsoft.EntityFrameworkCore.Migrations;
namespace DiscImageChef.Database.Migrations
{
public partial class VersionStatistics : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable("Versions",
table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("Sqlite:Autoincrement", true),
Value = table.Column<string>(nullable: true),
Synchronized = table.Column<bool>(nullable: false)
}, constraints: table => { table.PrimaryKey("PK_Versions", x => x.Id); });
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable("Versions");
}
}
}

View File

@@ -1046,6 +1046,19 @@ namespace DiscImageChef.Database.Migrations
b.ToTable("Reports"); b.ToTable("Reports");
}); });
modelBuilder.Entity("DiscImageChef.Database.Models.Version", b =>
{
b.Property<int>("Id").ValueGeneratedOnAdd();
b.Property<bool>("Synchronized");
b.Property<string>("Value");
b.HasKey("Id");
b.ToTable("Versions");
});
modelBuilder.Entity("DiscImageChef.Decoders.SCSI.Modes+ModePage_2A", b => modelBuilder.Entity("DiscImageChef.Decoders.SCSI.Modes+ModePage_2A", b =>
{ {
b.Property<int>("Id").ValueGeneratedOnAdd(); b.Property<int>("Id").ValueGeneratedOnAdd();

View File

@@ -0,0 +1,12 @@
using System.ComponentModel.DataAnnotations;
namespace DiscImageChef.Database.Models
{
public class Version
{
[Key]
public int Id { get; set; }
public string Value { get; set; }
public bool Synchronized { get; set; }
}
}