mirror of
https://github.com/claunia/romrepomgr.git
synced 2025-12-16 19:24:51 +00:00
32 lines
9.4 KiB
C#
32 lines
9.4 KiB
C#
|
|
using Microsoft.EntityFrameworkCore.Migrations;
|
|||
|
|
|
|||
|
|
namespace RomRepoMgr.Database.Migrations
|
|||
|
|
{
|
|||
|
|
public partial class AddStatsTable : Migration
|
|||
|
|
{
|
|||
|
|
protected override void Up(MigrationBuilder migrationBuilder)
|
|||
|
|
{
|
|||
|
|
migrationBuilder.CreateTable("RomSetStats", table => new
|
|||
|
|
{
|
|||
|
|
RomSetId = table.Column<long>(nullable: false),
|
|||
|
|
TotalMachines = table.Column<long>(nullable: false),
|
|||
|
|
CompleteMachines = table.Column<long>(nullable: false),
|
|||
|
|
IncompleteMachines = table.Column<long>(nullable: false),
|
|||
|
|
TotalRoms = table.Column<long>(nullable: false),
|
|||
|
|
HaveRoms = table.Column<long>(nullable: false),
|
|||
|
|
MissRoms = table.Column<long>(nullable: false)
|
|||
|
|
}, constraints: table =>
|
|||
|
|
{
|
|||
|
|
table.PrimaryKey("PK_RomSetStats", x => x.RomSetId);
|
|||
|
|
|
|||
|
|
table.ForeignKey("FK_RomSetStats_RomSets_RomSetId", x => x.RomSetId, "RomSets", "Id",
|
|||
|
|
onDelete: ReferentialAction.Cascade);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
migrationBuilder.Sql(
|
|||
|
|
"INSERT INTO \"RomSetStats\" SELECT \"r\".\"Id\" AS \"RomSetId\", CAST((\n SELECT COUNT(*)\n FROM \"Machines\" AS \"m\"\n WHERE \"r\".\"Id\" = \"m\".\"RomSetId\") AS INTEGER) AS \"TotalMachines\", CAST((((\n SELECT COUNT(*)\n FROM \"Machines\" AS \"m0\"\n WHERE (\"r\".\"Id\" = \"m0\".\"RomSetId\") AND ((((\n SELECT COUNT(*)\n FROM \"FilesByMachines\" AS \"f\"\n WHERE \"m0\".\"Id\" = \"f\".\"MachineId\") > 0) AND ((\n SELECT COUNT(*)\n FROM \"DisksByMachines\" AS \"d\"\n WHERE \"m0\".\"Id\" = \"d\".\"MachineId\") = 0)) AND NOT EXISTS (\n SELECT 1\n FROM \"FilesByMachines\" AS \"f0\"\n INNER JOIN \"Files\" AS \"f1\" ON \"f0\".\"FileId\" = \"f1\".\"Id\"\n WHERE (\"m0\".\"Id\" = \"f0\".\"MachineId\") AND NOT (\"f1\".\"IsInRepo\")))) + (\n SELECT COUNT(*)\n FROM \"Machines\" AS \"m1\"\n WHERE (\"r\".\"Id\" = \"m1\".\"RomSetId\") AND ((((\n SELECT COUNT(*)\n FROM \"DisksByMachines\" AS \"d0\"\n WHERE \"m1\".\"Id\" = \"d0\".\"MachineId\") > 0) AND ((\n SELECT COUNT(*)\n FROM \"FilesByMachines\" AS \"f2\"\n WHERE \"m1\".\"Id\" = \"f2\".\"MachineId\") = 0)) AND NOT EXISTS (\n SELECT 1\n FROM \"DisksByMachines\" AS \"d1\"\n INNER JOIN \"Disks\" AS \"d2\" ON \"d1\".\"DiskId\" = \"d2\".\"Id\"\n WHERE (\"m1\".\"Id\" = \"d1\".\"MachineId\") AND NOT (\"d2\".\"IsInRepo\"))))) + (\n SELECT COUNT(*)\n FROM \"Machines\" AS \"m2\"\n WHERE (\"r\".\"Id\" = \"m2\".\"RomSetId\") AND (((((\n SELECT COUNT(*)\n FROM \"FilesByMachines\" AS \"f3\"\n WHERE \"m2\".\"Id\" = \"f3\".\"MachineId\") > 0) AND ((\n SELECT COUNT(*)\n FROM \"DisksByMachines\" AS \"d3\"\n WHERE \"m2\".\"Id\" = \"d3\".\"MachineId\") > 0)) AND NOT EXISTS (\n SELECT 1\n FROM \"FilesByMachines\" AS \"f4\"\n INNER JOIN \"Files\" AS \"f5\" ON \"f4\".\"FileId\" = \"f5\".\"Id\"\n WHERE (\"m2\".\"Id\" = \"f4\".\"MachineId\") AND NOT (\"f5\".\"IsInRepo\"))) AND NOT EXISTS (\n SELECT 1\n FROM \"DisksByMachines\" AS \"d4\"\n INNER JOIN \"Disks\" AS \"d5\" ON \"d4\".\"DiskId\" = \"d5\".\"Id\"\n WHERE (\"m2\".\"Id\" = \"d4\".\"MachineId\") AND NOT (\"d5\".\"IsInRepo\"))))) AS INTEGER) AS \"CompleteMachines\", CAST((((\n SELECT COUNT(*)\n FROM \"Machines\" AS \"m3\"\n WHERE (\"r\".\"Id\" = \"m3\".\"RomSetId\") AND ((((\n SELECT COUNT(*)\n FROM \"FilesByMachines\" AS \"f6\"\n WHERE \"m3\".\"Id\" = \"f6\".\"MachineId\") > 0) AND ((\n SELECT COUNT(*)\n FROM \"DisksByMachines\" AS \"d6\"\n WHERE \"m3\".\"Id\" = \"d6\".\"MachineId\") = 0)) AND EXISTS (\n SELECT 1\n FROM \"FilesByMachines\" AS \"f7\"\n INNER JOIN \"Files\" AS \"f8\" ON \"f7\".\"FileId\" = \"f8\".\"Id\"\n WHERE (\"m3\".\"Id\" = \"f7\".\"MachineId\") AND NOT (\"f8\".\"IsInRepo\")))) + (\n SELECT COUNT(*)\n FROM \"Machines\" AS \"m4\"\n WHERE (\"r\".\"Id\" = \"m4\".\"RomSetId\") AND ((((\n SELECT COUNT(*)\n FROM \"DisksByMachines\" AS \"d7\"\n WHERE \"m4\".\"Id\" = \"d7\".\"MachineId\") > 0) AND ((\n SELECT COUNT(*)\n FROM \"FilesByMachines\" AS \"f9\"\n WHERE \"m4\".\"Id\" = \"f9\".\"MachineId\") = 0)) AND EXISTS (\n SELECT 1\n FROM \"DisksByMachines\" AS \"d8\"\n INNER JOIN \"Disks\" AS \"d9\" ON \"d8\".\"DiskId\" = \"d9\".\"Id\"\n WHERE (\"m4\".\"Id\" = \"d8\".\"MachineId\") AND NOT (\"d9\".\"IsInRepo\"))))) + (\n SELECT COUNT(*)\n F
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected override void Down(MigrationBuilder migrationBuilder) => migrationBuilder.DropTable("RomSetStats");
|
|||
|
|
}
|
|||
|
|
}
|