From b97f3d3575a8393542be0bef88944d5cd1370ff4 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Mon, 7 Jul 2025 14:16:48 +0100 Subject: [PATCH] Bump to net9.0 --- Makefile | 9 +- README.md | 8 +- dotnet-tools.json | 14 - src/.vscode/launch.json | 2 +- src/isn.abst/isn.abst.csproj | 2 +- src/isn/isn.csproj | 10 +- src/isnd/Controllers/AccountController.cs | 7 +- src/isnd/Controllers/ApiKeysController.cs | 12 +- src/isnd/Controllers/HomeController.cs | 2 +- .../Controllers/PackageVersionController.cs | 4 +- .../Packages/PackagesController.Put.cs | 2 +- .../Packages/PackagesController.WebViews.cs | 6 +- src/isnd/Data/ApplicationDbContext.cs | 10 +- .../20250707142411_net9.Designer.cs | 545 ++++++++++++++++++ src/isnd/Migrations/20250707142411_net9.cs | 376 ++++++++++++ .../ApplicationDbContextModelSnapshot.cs | 14 +- src/isnd/Services/ApiKeyProvider.cs | 4 +- src/isnd/Services/PackageManager.cs | 56 +- src/isnd/Startup.cs | 7 +- src/isnd/isnd.csproj | 38 +- test/data/test-isn/test-isn.csproj | 2 +- test/isn.tests/isn.tests.csproj | 10 +- test/isnd.tests/WebServerFixture.cs | 2 +- 23 files changed, 1026 insertions(+), 116 deletions(-) create mode 100644 src/isnd/Migrations/20250707142411_net9.Designer.cs create mode 100644 src/isnd/Migrations/20250707142411_net9.cs diff --git a/Makefile b/Makefile index 2597883..25bb240 100644 --- a/Makefile +++ b/Makefile @@ -16,14 +16,17 @@ watch: test-push: isn push src/isn/bin/Debug/isn.*.nupkg -clean-%: src/% +clean-src-%: src/% + rm -rf $^/bin $^/obj + +clean-test-%: test/% rm -rf $^/bin $^/obj packs: pack-isn pack-isnd pack-isn.abst -clean: clean-isnd clean-isn clean-isn.abst +clean: clean-src-isnd clean-src-isn clean-src-isn.abst clean-test-isnd.tests clean-test-isn.tests -TARGETFRAMEWORK=net8.0 +TARGETFRAMEWORK=net9.0 server-update: dotnet build -c Release src/isnd diff --git a/README.md b/README.md index 34c97c3..5118f27 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ La livraison initiale, aujourd'hui : ````bash sudo mkdir -p /srv/www/isnd -sudo cp -a src/isnd/bin/Release/net8.0/publish/* /srv/www/isnd +sudo cp -a src/isnd/bin/Release/net9.0/publish/* /srv/www/isnd sudo cp contrib/isnd.service /etc/systemd/system chown -R isn:isn /srv/www/isnd/ sudo systemctl daemon-reload @@ -81,13 +81,13 @@ Dans le détail, la séquence serait du style : ````bash # compiler tout dotnet build -c Release -dotnet publish -c Release -f net8.0 src/isnd +dotnet publish -c Release -f net9.0 src/isnd # MAJ du serveur sudo systemctl stop isnd -sudo cp -a src/isnd/bin/Release/net8.0/publish/* /srv/www/isnd +sudo cp -a src/isnd/bin/Release/net9.0/publish/* /srv/www/isnd sudo systemctl start isnd # MAJ du client -sudo cp -a src/isn/bin/Release/net8.0/* /usr/local/lib/isn +sudo cp -a src/isn/bin/Release/net9.0/* /usr/local/lib/isn sudo chown -R root:root /usr/local/lib/isn ```` diff --git a/dotnet-tools.json b/dotnet-tools.json index ae373b8..c69d666 100644 --- a/dotnet-tools.json +++ b/dotnet-tools.json @@ -9,13 +9,6 @@ ], "rollForward": false }, - "gitversion.tool": { - "version": "6.3.0", - "commands": [ - "dotnet-gitversion" - ], - "rollForward": false - }, "gitreleasemanager.tool": { "version": "0.20.0", "commands": [ @@ -29,13 +22,6 @@ "wyam2" ], "rollForward": false - }, - "dotnet-ef": { - "version": "8.0.7", - "commands": [ - "dotnet-ef" - ], - "rollForward": false } } } \ No newline at end of file diff --git a/src/.vscode/launch.json b/src/.vscode/launch.json index f19eaba..04bdf59 100644 --- a/src/.vscode/launch.json +++ b/src/.vscode/launch.json @@ -10,7 +10,7 @@ "request": "launch", "preLaunchTask": "build", // If you have changed target frameworks, make sure to update the program path. - "program": "${workspaceFolder}/isnd/bin/Debug/net8.0/isnd.dll", + "program": "${workspaceFolder}/isnd/bin/Debug/net9.0/isnd.dll", "args": [], "cwd": "${workspaceFolder}/isnd", "stopAtEntry": false, diff --git a/src/isn.abst/isn.abst.csproj b/src/isn.abst/isn.abst.csproj index 35776a9..289a876 100644 --- a/src/isn.abst/isn.abst.csproj +++ b/src/isn.abst/isn.abst.csproj @@ -1,6 +1,6 @@  - net7.0;net8.0 + net7.0;net8.0;net9.0 diff --git a/src/isn/isn.csproj b/src/isn/isn.csproj index be8fa76..ace92b3 100644 --- a/src/isn/isn.csproj +++ b/src/isn/isn.csproj @@ -1,7 +1,7 @@  Exe - net8.0 + net9.0 nuget_cli 45b74c62-05bc-4603-95b4-3e80ae2fdf50 @@ -12,11 +12,11 @@ 1.0.7+Branch.main.Sha.3695c1742965d93eba0ad851656cfaa3e44ba327 - - + + - - + + \ No newline at end of file diff --git a/src/isnd/Controllers/AccountController.cs b/src/isnd/Controllers/AccountController.cs index e367166..99ace47 100644 --- a/src/isnd/Controllers/AccountController.cs +++ b/src/isnd/Controllers/AccountController.cs @@ -16,7 +16,6 @@ using System.Threading.Tasks; namespace isnd.Controllers { - [AllowAnonymous] public class AccountController : Controller { private readonly IAuthenticationSchemeProvider _schemeProvider; @@ -40,7 +39,7 @@ namespace isnd.Controllers /// /// Entry point into the login workflow /// - [HttpGet] + [HttpGet,AllowAnonymous] public async Task Login(string returnUrl) { // build a model so we know what to show on the login page @@ -59,7 +58,7 @@ namespace isnd.Controllers /// Handle postback from username/password login /// [HttpPost] - [ValidateAntiForgeryToken] + [ValidateAntiForgeryToken, AllowAnonymous] public async Task Login(LoginInputModel model, string button) { @@ -167,7 +166,7 @@ namespace isnd.Controllers return View("LoggedOut", vm); } - [HttpGet] + [HttpGet,AllowAnonymous] public IActionResult AccessDenied() { return new BadRequestObjectResult(403); diff --git a/src/isnd/Controllers/ApiKeysController.cs b/src/isnd/Controllers/ApiKeysController.cs index ce55a2f..05b89f1 100644 --- a/src/isnd/Controllers/ApiKeysController.cs +++ b/src/isnd/Controllers/ApiKeysController.cs @@ -81,7 +81,7 @@ namespace isnd.Controllers public async Task Delete(string id) { string userid = User.FindFirstValue(ClaimTypes.NameIdentifier); - ApiKey key = await dbContext.ApiKeys.FirstOrDefaultAsync(k => k.Id == id && k.UserId == userid); + ApiKey key = await dbContext.ApiKey.FirstOrDefaultAsync(k => k.Id == id && k.UserId == userid); return View(new DeleteModel { ApiKey = key }); } @@ -89,13 +89,13 @@ namespace isnd.Controllers public async Task Delete(DeleteModel model) { string userid = User.FindFirstValue(ClaimTypes.NameIdentifier); - ApiKey key = dbContext.ApiKeys.FirstOrDefault(k => k.Id == model.ApiKey.Id && k.UserId == userid); + ApiKey key = dbContext.ApiKey.FirstOrDefault(k => k.Id == model.ApiKey.Id && k.UserId == userid); if (key == null) { ModelState.AddModelError(null, "Key not found"); return View(); } - _ = dbContext.ApiKeys.Remove(key); + _ = dbContext.ApiKey.Remove(key); _ = await dbContext.SaveChangesAsync(); return View("Index", new IndexModel { ApiKey = GetUserKeys().ToList() } ); } @@ -103,7 +103,7 @@ namespace isnd.Controllers public async Task Details(string id) { string userid = User.FindFirstValue(ClaimTypes.NameIdentifier); - ApiKey key = await dbContext.ApiKeys.FirstOrDefaultAsync(k => k.Id == id && k.UserId == userid); + ApiKey key = await dbContext.ApiKey.FirstOrDefaultAsync(k => k.Id == id && k.UserId == userid); if (key == null) { ModelState.AddModelError("id", "Key not found"); @@ -133,7 +133,7 @@ namespace isnd.Controllers { string userId = User.FindFirstValue(ClaimTypes.NameIdentifier); - var apiKey = await dbContext.ApiKeys.SingleOrDefaultAsync(k => k.UserId == userId && k.Id == model.ApiKey.Id); + var apiKey = await dbContext.ApiKey.SingleOrDefaultAsync(k => k.UserId == userId && k.Id == model.ApiKey.Id); apiKey.Name = model.ApiKey.Name; apiKey.ValidityPeriodInDays = model.ApiKey.ValidityPeriodInDays; await dbContext.SaveChangesAsync(); @@ -142,7 +142,7 @@ namespace isnd.Controllers public IQueryable GetUserKeys() { - return dbContext.ApiKeys.Include(k => k.User).Where(k => k.User.UserName == User.Identity.Name); + return dbContext.ApiKey.Include(k => k.User).Where(k => k.User.UserName == User.Identity.Name); } } } \ No newline at end of file diff --git a/src/isnd/Controllers/HomeController.cs b/src/isnd/Controllers/HomeController.cs index b811535..e2449ec 100644 --- a/src/isnd/Controllers/HomeController.cs +++ b/src/isnd/Controllers/HomeController.cs @@ -36,7 +36,7 @@ namespace isnd.Controllers public IActionResult Index() { return View(new HomeIndexViewModel{ - PkgCount = _dbContext.Packages + PkgCount = _dbContext.Package .Where(p => p.Versions.Count > 0) .Count(), APIUrl = _isndSettings.ExternalUrl + Constants.ApiVersionPrefix + ApiConfig.Index}); diff --git a/src/isnd/Controllers/PackageVersionController.cs b/src/isnd/Controllers/PackageVersionController.cs index 94c2fb5..06e8544 100644 --- a/src/isnd/Controllers/PackageVersionController.cs +++ b/src/isnd/Controllers/PackageVersionController.cs @@ -27,7 +27,7 @@ namespace isnd // GET: PackageVersion public async Task Index(PackageVersionIndexViewModel model) { - var applicationDbContext = _context.PackageVersions.Include(p => p.Package) + var applicationDbContext = _context.PackageVersion.Include(p => p.Package) .Include(p => p.Package.Owner) .Include(p => p.Package.Versions) .Where( @@ -41,7 +41,7 @@ namespace isnd public async Task Mines(PackageVersionIndexViewModel model) { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); - var applicationDbContext = _context.PackageVersions + var applicationDbContext = _context.PackageVersion .Include(p => p.Package).Where( p => (string.IsNullOrEmpty(model.PackageId) || p.PackageId.StartsWith(model.PackageId)) && p.Package.OwnerId == userId); diff --git a/src/isnd/Controllers/Packages/PackagesController.Put.cs b/src/isnd/Controllers/Packages/PackagesController.Put.cs index 7aad99e..5c0aaa4 100644 --- a/src/isnd/Controllers/Packages/PackagesController.Put.cs +++ b/src/isnd/Controllers/Packages/PackagesController.Put.cs @@ -27,7 +27,7 @@ namespace isnd.Controllers ViewData["files"] = files; var clearKey = protector.Unprotect(apiKey); - var dbApiKey = dbContext.ApiKeys.SingleOrDefault(k => k.Id == clearKey); + var dbApiKey = dbContext.ApiKey.SingleOrDefault(k => k.Id == clearKey); if (dbApiKey == null) { logger.LogError("403 : no api-key"); diff --git a/src/isnd/Controllers/Packages/PackagesController.WebViews.cs b/src/isnd/Controllers/Packages/PackagesController.WebViews.cs index fdc4441..56159ea 100644 --- a/src/isnd/Controllers/Packages/PackagesController.WebViews.cs +++ b/src/isnd/Controllers/Packages/PackagesController.WebViews.cs @@ -56,7 +56,7 @@ namespace isnd.Controllers return NotFound(); } - var packageVersion = dbContext.PackageVersions + var packageVersion = dbContext.PackageVersion .Include(p=>p.LatestCommit) .Include(p => p.Package) .Where(m => m.PackageId == model.pkgid) @@ -84,7 +84,7 @@ namespace isnd.Controllers return NotFound(); } - var packageVersion = await dbContext.PackageVersions.Include(p => p.Package) + var packageVersion = await dbContext.PackageVersion.Include(p => p.Package) .FirstOrDefaultAsync(m => m.PackageId == pkgid && m.FullString == version && (pkgtype!=null && m.Type == pkgtype || m.Type != "Delete" )); if (packageVersion == null) return NotFound(); @@ -99,7 +99,7 @@ namespace isnd.Controllers public async Task DeleteConfirmed(string pkgid, string version, string type) { - var packageVersion = await dbContext.PackageVersions + var packageVersion = await dbContext.PackageVersion .Include(pv => pv.Package) .Where(m => m.PackageId == pkgid && m.FullString == version && (type==null || m.Type == type)) diff --git a/src/isnd/Data/ApplicationDbContext.cs b/src/isnd/Data/ApplicationDbContext.cs index 9785bf2..59b4a65 100644 --- a/src/isnd/Data/ApplicationDbContext.cs +++ b/src/isnd/Data/ApplicationDbContext.cs @@ -37,27 +37,27 @@ namespace isnd.Data /// User API keys /// /// - public DbSet ApiKeys { get; set; } + public DbSet ApiKey { get; set; } /// /// Packages /// /// - public DbSet Packages { get; set; } + public DbSet Package { get; set; } /// /// Package Versions /// /// - public DbSet PackageVersions { get; set; } + public DbSet PackageVersion { get; set; } /// /// Commits /// /// public DbSet Commits { get; set; } - public DbSet Dependencies { get; set; } + public DbSet Dependency { get; set; } - public DbSet PackageDependencyGroups { get; set; } + public DbSet PackageDependencyGroup { get; set; } } } diff --git a/src/isnd/Migrations/20250707142411_net9.Designer.cs b/src/isnd/Migrations/20250707142411_net9.Designer.cs new file mode 100644 index 0000000..8d76d4a --- /dev/null +++ b/src/isnd/Migrations/20250707142411_net9.Designer.cs @@ -0,0 +1,545 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using isnd.Data; + +#nullable disable + +namespace isnd.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20250707142411_net9")] + partial class net9 + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "9.0.6") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("text"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("text"); + + b.Property("ProviderKey") + .HasColumnType("text"); + + b.Property("ProviderDisplayName") + .HasColumnType("text"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("RoleId") + .HasColumnType("text"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("LoginProvider") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Value") + .HasColumnType("text"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("isnd.Data.ApiKeys.ApiKey", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("text"); + + b.Property("CreationDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("text"); + + b.Property("ValidityPeriodInDays") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("ApiKey"); + }); + + modelBuilder.Entity("isnd.Data.ApplicationUser", b => + { + b.Property("Id") + .HasColumnType("text"); + + b.Property("AccessFailedCount") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("text"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("boolean"); + + b.Property("FullName") + .HasColumnType("text"); + + b.Property("LockoutEnabled") + .HasColumnType("boolean"); + + b.Property("LockoutEnd") + .HasColumnType("timestamp with time zone"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("PasswordHash") + .HasColumnType("text"); + + b.Property("PhoneNumber") + .HasColumnType("text"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("boolean"); + + b.Property("SecurityStamp") + .HasColumnType("text"); + + b.Property("TwoFactorEnabled") + .HasColumnType("boolean"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("AspNetUsers", (string)null); + }); + + modelBuilder.Entity("isnd.Data.Dependency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("text"); + + b.Property("DependencyGroupId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Exclude") + .HasMaxLength(2048) + .HasColumnType("character varying(2048)"); + + b.Property("PackageId") + .HasColumnType("text"); + + b.Property("Version") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); + + b.HasKey("Id"); + + b.HasIndex("DependencyGroupId"); + + b.ToTable("Dependency"); + }); + + modelBuilder.Entity("isnd.Data.PackageDependencyGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("text"); + + b.Property("PackageId") + .IsRequired() + .HasColumnType("character varying(1024)"); + + b.Property("PackageVersionFullString") + .IsRequired() + .HasColumnType("character varying(256)"); + + b.Property("TargetFramework") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("PackageId", "PackageVersionFullString"); + + b.ToTable("PackageDependencyGroup"); + }); + + modelBuilder.Entity("isnd.Data.PackageVersion", b => + { + b.Property("PackageId") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); + + b.Property("FullString") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("Authors") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); + + b.Property("CommitNId") + .HasColumnType("bigint"); + + b.Property("Description") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); + + b.Property("IsPrerelease") + .HasColumnType("boolean"); + + b.Property("Major") + .HasColumnType("integer"); + + b.Property("Minor") + .HasColumnType("integer"); + + b.Property("Patch") + .HasColumnType("integer"); + + b.Property("Revision") + .HasColumnType("integer"); + + b.Property("Type") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("PackageId", "FullString"); + + b.HasIndex("CommitNId"); + + b.ToTable("PackageVersion"); + }); + + modelBuilder.Entity("isnd.Data.Packages.Commit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Action") + .HasColumnType("integer"); + + b.Property("TimeStamp") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.ToTable("Commits"); + }); + + modelBuilder.Entity("isnd.Data.Packages.Package", b => + { + b.Property("Id") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); + + b.Property("CommitNId") + .HasColumnType("bigint"); + + b.Property("Description") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); + + b.Property("OwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Public") + .HasColumnType("boolean"); + + b.HasKey("Id"); + + b.HasIndex("CommitNId"); + + b.HasIndex("OwnerId"); + + b.ToTable("Package"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("isnd.Data.ApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("isnd.Data.ApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("isnd.Data.ApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("isnd.Data.ApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("isnd.Data.ApiKeys.ApiKey", b => + { + b.HasOne("isnd.Data.ApplicationUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("isnd.Data.Dependency", b => + { + b.HasOne("isnd.Data.PackageDependencyGroup", "Group") + .WithMany("Dependencies") + .HasForeignKey("DependencyGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Group"); + }); + + modelBuilder.Entity("isnd.Data.PackageDependencyGroup", b => + { + b.HasOne("isnd.Data.PackageVersion", "PackageVersion") + .WithMany("DependencyGroups") + .HasForeignKey("PackageId", "PackageVersionFullString") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PackageVersion"); + }); + + modelBuilder.Entity("isnd.Data.PackageVersion", b => + { + b.HasOne("isnd.Data.Packages.Commit", "LatestCommit") + .WithMany("Versions") + .HasForeignKey("CommitNId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("isnd.Data.Packages.Package", "Package") + .WithMany("Versions") + .HasForeignKey("PackageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("LatestCommit"); + + b.Navigation("Package"); + }); + + modelBuilder.Entity("isnd.Data.Packages.Package", b => + { + b.HasOne("isnd.Data.Packages.Commit", "LatestCommit") + .WithMany() + .HasForeignKey("CommitNId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("isnd.Data.ApplicationUser", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("LatestCommit"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("isnd.Data.PackageDependencyGroup", b => + { + b.Navigation("Dependencies"); + }); + + modelBuilder.Entity("isnd.Data.PackageVersion", b => + { + b.Navigation("DependencyGroups"); + }); + + modelBuilder.Entity("isnd.Data.Packages.Commit", b => + { + b.Navigation("Versions"); + }); + + modelBuilder.Entity("isnd.Data.Packages.Package", b => + { + b.Navigation("Versions"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/isnd/Migrations/20250707142411_net9.cs b/src/isnd/Migrations/20250707142411_net9.cs new file mode 100644 index 0000000..81599fe --- /dev/null +++ b/src/isnd/Migrations/20250707142411_net9.cs @@ -0,0 +1,376 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace isnd.Migrations +{ + /// + public partial class net9 : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_ApiKeys_AspNetUsers_UserId", + table: "ApiKeys"); + + migrationBuilder.DropForeignKey( + name: "FK_Dependencies_PackageDependencyGroups_DependencyGroupId", + table: "Dependencies"); + + migrationBuilder.DropForeignKey( + name: "FK_PackageDependencyGroups_PackageVersions_PackageId_PackageVe~", + table: "PackageDependencyGroups"); + + migrationBuilder.DropForeignKey( + name: "FK_Packages_AspNetUsers_OwnerId", + table: "Packages"); + + migrationBuilder.DropForeignKey( + name: "FK_Packages_Commits_CommitNId", + table: "Packages"); + + migrationBuilder.DropForeignKey( + name: "FK_PackageVersions_Commits_CommitNId", + table: "PackageVersions"); + + migrationBuilder.DropForeignKey( + name: "FK_PackageVersions_Packages_PackageId", + table: "PackageVersions"); + + migrationBuilder.DropPrimaryKey( + name: "PK_PackageVersions", + table: "PackageVersions"); + + migrationBuilder.DropPrimaryKey( + name: "PK_Packages", + table: "Packages"); + + migrationBuilder.DropPrimaryKey( + name: "PK_PackageDependencyGroups", + table: "PackageDependencyGroups"); + + migrationBuilder.DropPrimaryKey( + name: "PK_Dependencies", + table: "Dependencies"); + + migrationBuilder.DropPrimaryKey( + name: "PK_ApiKeys", + table: "ApiKeys"); + + migrationBuilder.RenameTable( + name: "PackageVersions", + newName: "PackageVersion"); + + migrationBuilder.RenameTable( + name: "Packages", + newName: "Package"); + + migrationBuilder.RenameTable( + name: "PackageDependencyGroups", + newName: "PackageDependencyGroup"); + + migrationBuilder.RenameTable( + name: "Dependencies", + newName: "Dependency"); + + migrationBuilder.RenameTable( + name: "ApiKeys", + newName: "ApiKey"); + + migrationBuilder.RenameIndex( + name: "IX_PackageVersions_CommitNId", + table: "PackageVersion", + newName: "IX_PackageVersion_CommitNId"); + + migrationBuilder.RenameIndex( + name: "IX_Packages_OwnerId", + table: "Package", + newName: "IX_Package_OwnerId"); + + migrationBuilder.RenameIndex( + name: "IX_Packages_CommitNId", + table: "Package", + newName: "IX_Package_CommitNId"); + + migrationBuilder.RenameIndex( + name: "IX_PackageDependencyGroups_PackageId_PackageVersionFullString", + table: "PackageDependencyGroup", + newName: "IX_PackageDependencyGroup_PackageId_PackageVersionFullString"); + + migrationBuilder.RenameIndex( + name: "IX_Dependencies_DependencyGroupId", + table: "Dependency", + newName: "IX_Dependency_DependencyGroupId"); + + migrationBuilder.RenameIndex( + name: "IX_ApiKeys_UserId", + table: "ApiKey", + newName: "IX_ApiKey_UserId"); + + migrationBuilder.AddPrimaryKey( + name: "PK_PackageVersion", + table: "PackageVersion", + columns: new[] { "PackageId", "FullString" }); + + migrationBuilder.AddPrimaryKey( + name: "PK_Package", + table: "Package", + column: "Id"); + + migrationBuilder.AddPrimaryKey( + name: "PK_PackageDependencyGroup", + table: "PackageDependencyGroup", + column: "Id"); + + migrationBuilder.AddPrimaryKey( + name: "PK_Dependency", + table: "Dependency", + column: "Id"); + + migrationBuilder.AddPrimaryKey( + name: "PK_ApiKey", + table: "ApiKey", + column: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_ApiKey_AspNetUsers_UserId", + table: "ApiKey", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_Dependency_PackageDependencyGroup_DependencyGroupId", + table: "Dependency", + column: "DependencyGroupId", + principalTable: "PackageDependencyGroup", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_Package_AspNetUsers_OwnerId", + table: "Package", + column: "OwnerId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_Package_Commits_CommitNId", + table: "Package", + column: "CommitNId", + principalTable: "Commits", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_PackageDependencyGroup_PackageVersion_PackageId_PackageVers~", + table: "PackageDependencyGroup", + columns: new[] { "PackageId", "PackageVersionFullString" }, + principalTable: "PackageVersion", + principalColumns: new[] { "PackageId", "FullString" }, + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_PackageVersion_Commits_CommitNId", + table: "PackageVersion", + column: "CommitNId", + principalTable: "Commits", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_PackageVersion_Package_PackageId", + table: "PackageVersion", + column: "PackageId", + principalTable: "Package", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_ApiKey_AspNetUsers_UserId", + table: "ApiKey"); + + migrationBuilder.DropForeignKey( + name: "FK_Dependency_PackageDependencyGroup_DependencyGroupId", + table: "Dependency"); + + migrationBuilder.DropForeignKey( + name: "FK_Package_AspNetUsers_OwnerId", + table: "Package"); + + migrationBuilder.DropForeignKey( + name: "FK_Package_Commits_CommitNId", + table: "Package"); + + migrationBuilder.DropForeignKey( + name: "FK_PackageDependencyGroup_PackageVersion_PackageId_PackageVers~", + table: "PackageDependencyGroup"); + + migrationBuilder.DropForeignKey( + name: "FK_PackageVersion_Commits_CommitNId", + table: "PackageVersion"); + + migrationBuilder.DropForeignKey( + name: "FK_PackageVersion_Package_PackageId", + table: "PackageVersion"); + + migrationBuilder.DropPrimaryKey( + name: "PK_PackageVersion", + table: "PackageVersion"); + + migrationBuilder.DropPrimaryKey( + name: "PK_PackageDependencyGroup", + table: "PackageDependencyGroup"); + + migrationBuilder.DropPrimaryKey( + name: "PK_Package", + table: "Package"); + + migrationBuilder.DropPrimaryKey( + name: "PK_Dependency", + table: "Dependency"); + + migrationBuilder.DropPrimaryKey( + name: "PK_ApiKey", + table: "ApiKey"); + + migrationBuilder.RenameTable( + name: "PackageVersion", + newName: "PackageVersions"); + + migrationBuilder.RenameTable( + name: "PackageDependencyGroup", + newName: "PackageDependencyGroups"); + + migrationBuilder.RenameTable( + name: "Package", + newName: "Packages"); + + migrationBuilder.RenameTable( + name: "Dependency", + newName: "Dependencies"); + + migrationBuilder.RenameTable( + name: "ApiKey", + newName: "ApiKeys"); + + migrationBuilder.RenameIndex( + name: "IX_PackageVersion_CommitNId", + table: "PackageVersions", + newName: "IX_PackageVersions_CommitNId"); + + migrationBuilder.RenameIndex( + name: "IX_PackageDependencyGroup_PackageId_PackageVersionFullString", + table: "PackageDependencyGroups", + newName: "IX_PackageDependencyGroups_PackageId_PackageVersionFullString"); + + migrationBuilder.RenameIndex( + name: "IX_Package_OwnerId", + table: "Packages", + newName: "IX_Packages_OwnerId"); + + migrationBuilder.RenameIndex( + name: "IX_Package_CommitNId", + table: "Packages", + newName: "IX_Packages_CommitNId"); + + migrationBuilder.RenameIndex( + name: "IX_Dependency_DependencyGroupId", + table: "Dependencies", + newName: "IX_Dependencies_DependencyGroupId"); + + migrationBuilder.RenameIndex( + name: "IX_ApiKey_UserId", + table: "ApiKeys", + newName: "IX_ApiKeys_UserId"); + + migrationBuilder.AddPrimaryKey( + name: "PK_PackageVersions", + table: "PackageVersions", + columns: new[] { "PackageId", "FullString" }); + + migrationBuilder.AddPrimaryKey( + name: "PK_PackageDependencyGroups", + table: "PackageDependencyGroups", + column: "Id"); + + migrationBuilder.AddPrimaryKey( + name: "PK_Packages", + table: "Packages", + column: "Id"); + + migrationBuilder.AddPrimaryKey( + name: "PK_Dependencies", + table: "Dependencies", + column: "Id"); + + migrationBuilder.AddPrimaryKey( + name: "PK_ApiKeys", + table: "ApiKeys", + column: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_ApiKeys_AspNetUsers_UserId", + table: "ApiKeys", + column: "UserId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_Dependencies_PackageDependencyGroups_DependencyGroupId", + table: "Dependencies", + column: "DependencyGroupId", + principalTable: "PackageDependencyGroups", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_PackageDependencyGroups_PackageVersions_PackageId_PackageVe~", + table: "PackageDependencyGroups", + columns: new[] { "PackageId", "PackageVersionFullString" }, + principalTable: "PackageVersions", + principalColumns: new[] { "PackageId", "FullString" }, + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_Packages_AspNetUsers_OwnerId", + table: "Packages", + column: "OwnerId", + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_Packages_Commits_CommitNId", + table: "Packages", + column: "CommitNId", + principalTable: "Commits", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_PackageVersions_Commits_CommitNId", + table: "PackageVersions", + column: "CommitNId", + principalTable: "Commits", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_PackageVersions_Packages_PackageId", + table: "PackageVersions", + column: "PackageId", + principalTable: "Packages", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + } +} diff --git a/src/isnd/Migrations/ApplicationDbContextModelSnapshot.cs b/src/isnd/Migrations/ApplicationDbContextModelSnapshot.cs index b94a744..dcae553 100644 --- a/src/isnd/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/src/isnd/Migrations/ApplicationDbContextModelSnapshot.cs @@ -17,7 +17,7 @@ namespace isnd.Migrations { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "8.0.10") + .HasAnnotation("ProductVersion", "9.0.6") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); @@ -177,7 +177,7 @@ namespace isnd.Migrations b.HasIndex("UserId"); - b.ToTable("ApiKeys", (string)null); + b.ToTable("ApiKey"); }); modelBuilder.Entity("isnd.Data.ApplicationUser", b => @@ -272,7 +272,7 @@ namespace isnd.Migrations b.HasIndex("DependencyGroupId"); - b.ToTable("Dependencies", (string)null); + b.ToTable("Dependency"); }); modelBuilder.Entity("isnd.Data.PackageDependencyGroup", b => @@ -297,7 +297,7 @@ namespace isnd.Migrations b.HasIndex("PackageId", "PackageVersionFullString"); - b.ToTable("PackageDependencyGroups", (string)null); + b.ToTable("PackageDependencyGroup"); }); modelBuilder.Entity("isnd.Data.PackageVersion", b => @@ -344,7 +344,7 @@ namespace isnd.Migrations b.HasIndex("CommitNId"); - b.ToTable("PackageVersions", (string)null); + b.ToTable("PackageVersion"); }); modelBuilder.Entity("isnd.Data.Packages.Commit", b => @@ -363,7 +363,7 @@ namespace isnd.Migrations b.HasKey("Id"); - b.ToTable("Commits", (string)null); + b.ToTable("Commits"); }); modelBuilder.Entity("isnd.Data.Packages.Package", b => @@ -392,7 +392,7 @@ namespace isnd.Migrations b.HasIndex("OwnerId"); - b.ToTable("Packages", (string)null); + b.ToTable("Package"); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => diff --git a/src/isnd/Services/ApiKeyProvider.cs b/src/isnd/Services/ApiKeyProvider.cs index 15ed673..91c99d0 100644 --- a/src/isnd/Services/ApiKeyProvider.cs +++ b/src/isnd/Services/ApiKeyProvider.cs @@ -36,13 +36,13 @@ public class ApiKeyProvider : IApiKeyProvider ValidityPeriodInDays = model.ValidityPeriodInDays }; - _ = dbContext.ApiKeys.Add(newKey); + _ = dbContext.ApiKey.Add(newKey); _ = await dbContext.SaveChangesAsync(); return newKey; } public IQueryable GetUserKeys(string identityName) { - return dbContext.ApiKeys.Include(k => k.User).Where(k => k.User.UserName == identityName); + return dbContext.ApiKey.Include(k => k.User).Where(k => k.User.UserName == identityName); } } \ No newline at end of file diff --git a/src/isnd/Services/PackageManager.cs b/src/isnd/Services/PackageManager.cs index c90da17..6b2a55c 100644 --- a/src/isnd/Services/PackageManager.cs +++ b/src/isnd/Services/PackageManager.cs @@ -107,7 +107,7 @@ namespace isnd.Services int skip, int take, bool prerelease = false, string packageType = null) { - var scope = dbContext.PackageVersions.Where( + var scope = dbContext.PackageVersion.Where( v => v.PackageId.StartsWith(id) && (prerelease || !v.IsPrerelease) && (packageType == null || v.Type == packageType) @@ -139,13 +139,13 @@ namespace isnd.Services IQueryable results = (parsedVersion != null) ? (packageType == null) ? - dbContext.PackageVersions.Where( + dbContext.PackageVersion.Where( v => v.PackageId.ToLower() == id && (prerelease || !v.IsPrerelease) && (parsedVersion.CompareTo(new SemanticVersion(v.Major, v.Minor, v.Patch)) < 0) ) : - dbContext.PackageVersions.Where( + dbContext.PackageVersion.Where( v => v.PackageId.ToLower() == id && (prerelease || !v.IsPrerelease) && (v.Type == packageType) @@ -154,12 +154,12 @@ namespace isnd.Services : (packageType == null) ? - dbContext.PackageVersions.Where( + dbContext.PackageVersion.Where( v => v.PackageId.ToLower() == id && (prerelease || !v.IsPrerelease) ) : - dbContext.PackageVersions.Where( + dbContext.PackageVersion.Where( v => v.PackageId.ToLower() == id && (prerelease || !v.IsPrerelease) && (v.Type == packageType) @@ -199,7 +199,7 @@ namespace isnd.Services i = isndSettings.CatalogPageLen; foreach (var commit in scope) { - var validPkgs = (await dbContext.Packages + var validPkgs = (await dbContext.Package .Include(po => po.Owner) .Include(pkg => pkg.Versions) .Include(pkg => pkg.LatestCommit) @@ -237,7 +237,7 @@ namespace isnd.Services TimeStamp = DateTimeOffset.Now.ToUniversalTime() }; dbContext.Commits.Add(commit); - var pkg = await dbContext.PackageVersions.SingleOrDefaultAsync( + var pkg = await dbContext.PackageVersion.SingleOrDefaultAsync( v => v.PackageId == pkgId && v.FullString == version && v.Type == type @@ -246,7 +246,7 @@ namespace isnd.Services { return new PackageDeletionReport { Deleted = false }; } - dbContext.PackageVersions.Remove(pkg); + dbContext.PackageVersion.Remove(pkg); await dbContext.SaveChangesAsync(); await UpdateCatalogForAsync(commit); return new PackageDeletionReport { Deleted = true, DeletedVersion = pkg }; @@ -255,7 +255,7 @@ namespace isnd.Services public async Task GetPackageDetailsAsync (string pkgId, string version, string type) { - var pkg = await dbContext.PackageVersions + var pkg = await dbContext.PackageVersion .Include(v => v.Package) .Include(v => v.Package.Owner) .Include(v => v.LatestCommit) @@ -268,7 +268,7 @@ namespace isnd.Services if (pkg == null) return null; foreach (var g in pkg.DependencyGroups) { - g.Dependencies = dbContext.Dependencies.Where(d => d.DependencyGroupId == g.Id).ToList(); + g.Dependencies = dbContext.Dependency.Where(d => d.DependencyGroupId == g.Id).ToList(); } return new PackageDetails(pkg, apiBase); } @@ -276,7 +276,7 @@ namespace isnd.Services public async Task GetCatalogEntryAsync (string pkgId, string semver, string pkgType = "Dependency") { - var version = await dbContext.PackageVersions + var version = await dbContext.PackageVersion .Include(v => v.Package) .Include(v => v.Package.LatestCommit) .Include(v => v.Package.Owner) @@ -290,7 +290,7 @@ namespace isnd.Services if (version == null) return null; foreach (var g in version.DependencyGroups) { - g.Dependencies = dbContext.Dependencies.Where(d => d.DependencyGroupId == g.Id).ToList(); + g.Dependencies = dbContext.Dependency.Where(d => d.DependencyGroupId == g.Id).ToList(); } return version.ToPackage(apiBase); } @@ -298,13 +298,13 @@ namespace isnd.Services public async Task UserAskForPackageDeletionAsync (string uid, string id, string lower, string type) { - PackageVersion packageVersion = await dbContext.PackageVersions + PackageVersion packageVersion = await dbContext.PackageVersion .Include(pv => pv.Package) .FirstOrDefaultAsync(m => m.PackageId == id && m.FullString == lower && (type == null || m.Type == type)); if (packageVersion == null) return null; if (packageVersion.Package.OwnerId != uid) return null; - dbContext.PackageVersions.Remove(packageVersion); + dbContext.PackageVersion.Remove(packageVersion); await dbContext.SaveChangesAsync(); return new PackageDeletionReport { Deleted = true, DeletedVersion = packageVersion }; } @@ -314,7 +314,7 @@ namespace isnd.Services (string pkgId, string semver, string pkgType, bool preRelease) { // PackageDependency - return dbContext.PackageVersions + return dbContext.PackageVersion .Include(v => v.Package) .Include(v => v.Package.Owner) .Include(v => v.Package.LatestCommit) @@ -329,7 +329,7 @@ namespace isnd.Services } public PackageVersion GetPackage(string pkgId, string semver, string pkgType) { - return dbContext.PackageVersions + return dbContext.PackageVersion .Include(v => v.Package) .Include(v => v.LatestCommit) .Include(v => v.DependencyGroups.Last().Dependencies) @@ -342,7 +342,7 @@ namespace isnd.Services { if (string.IsNullOrWhiteSpace(query.Query)) return null; query.Query = query.Query.ToLower(); - var scope = await dbContext.PackageVersions + var scope = await dbContext.PackageVersion .Include(p => p.Package) .Include(p => p.Package.Owner) .Include(p => p.LatestCommit) @@ -352,7 +352,7 @@ namespace isnd.Services string bid = $"{apiBase}{ApiConfig.Registration}"; foreach (var version in scope) { - version.DependencyGroups = dbContext.PackageDependencyGroups.Include(d => d.Dependencies) + version.DependencyGroups = dbContext.PackageDependencyGroup.Include(d => d.Dependencies) .Where(d => d.PackageId == version.PackageId && d.PackageVersionFullString == version.FullString) .ToList(); version.LatestCommit = dbContext.Commits.Single(c => c.Id == version.CommitNId); @@ -371,7 +371,7 @@ namespace isnd.Services return new PackageSearchResult(apiBase); } - var allPackages = dbContext.Packages + var allPackages = dbContext.Package .Include(g => g.Versions).OrderBy(v => v.CommitNId) .Where(d => d.Id.StartsWith(query.Query) && (query.Prerelease || d.Versions.Any(v => !v.IsPrerelease))) @@ -386,7 +386,7 @@ namespace isnd.Services foreach (var package in packages) foreach (var version in package.Versions) { - version.DependencyGroups = dbContext.PackageDependencyGroups.Include(d => d.Dependencies) + version.DependencyGroups = dbContext.PackageDependencyGroup.Include(d => d.Dependencies) .Where(d => d.PackageVersionFullString == version.FullString && d.PackageId == version.PackageId) .ToList(); @@ -447,7 +447,7 @@ namespace isnd.Services var authors = xMetaElements.FirstOrDefault(x => x.Name.LocalName == "authors")?.Value; var packageIdPathInfo = new DirectoryInfo(packageIdPath); - Data.Packages.Package pkg = dbContext.Packages.SingleOrDefault(p => p.Id == pkgId); + Data.Packages.Package pkg = dbContext.Package.SingleOrDefault(p => p.Id == pkgId); Commit commit = new Commit { Action = PackageAction.PublishPackage, @@ -466,7 +466,7 @@ namespace isnd.Services OwnerId = ownerId, Public = true, }; - dbContext.Packages.Add(pkg); + dbContext.Package.Add(pkg); } pkg.LatestCommit = commit; @@ -485,16 +485,16 @@ namespace isnd.Services } string fullStringVersion = nugetVersion.ToFullString(); - var pkgVersions = dbContext.PackageVersions.Where + var pkgVersions = dbContext.PackageVersion.Where (v => v.PackageId == pkg.Id && v.FullString == fullStringVersion); if (pkgVersions.Count() > 0) { foreach (var v in pkgVersions.ToArray()) - dbContext.PackageVersions.Remove(v); + dbContext.PackageVersion.Remove(v); } string versionFullString = nugetVersion.ToFullString(); - dbContext.PackageVersions.Add + dbContext.PackageVersion.Add (version = new PackageVersion { Package = pkg, @@ -512,11 +512,11 @@ namespace isnd.Services dbContext.Commits.Add(commit); - foreach (var group in dbContext.PackageDependencyGroups.Include(g => g.PackageVersion) + foreach (var group in dbContext.PackageDependencyGroup.Include(g => g.PackageVersion) .Where(x => x.PackageId == pkgId && x.PackageVersionFullString == versionFullString) .ToList()) { - dbContext.PackageDependencyGroups.Remove(group); + dbContext.PackageDependencyGroup.Remove(group); } version.DependencyGroups = new List(); foreach (var framework in frameWorks) @@ -535,7 +535,7 @@ namespace isnd.Services }; version.DependencyGroups.Add(group); - dbContext.PackageDependencyGroups.Add(group); + dbContext.PackageDependencyGroup.Add(group); } await dbContext.SaveChangesAsync(); diff --git a/src/isnd/Startup.cs b/src/isnd/Startup.cs index ac0078a..6aeec10 100644 --- a/src/isnd/Startup.cs +++ b/src/isnd/Startup.cs @@ -19,6 +19,7 @@ using System; using System.IO; using Microsoft.AspNetCore.HttpOverrides; using Microsoft.AspNetCore.DataProtection; +using Microsoft.EntityFrameworkCore.Diagnostics; namespace isnd { @@ -51,11 +52,11 @@ namespace isnd .Configure(adminStartupListConf) .Configure(o => o.Path = "~/migrate") .AddDbContext(options => - options.UseNpgsql( - Configuration.GetConnectionString("DefaultConnection"))) + options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection"))) .AddIdentity() .AddRoles() - .AddEntityFrameworkStores() + .AddEntityFrameworkStores( + ) .AddSignInManager() .AddDefaultUI() .AddDefaultTokenProviders(); diff --git a/src/isnd/isnd.csproj b/src/isnd/isnd.csproj index 8a0eebf..71758c8 100644 --- a/src/isnd/isnd.csproj +++ b/src/isnd/isnd.csproj @@ -1,6 +1,6 @@  - net8.0 + net9.0 85fd766d-5d23-4476-aed1-463b2942e86a true WTFPL @@ -13,33 +13,33 @@ - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - + + + + - - - - + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + true + - - + + All - - - + + + diff --git a/test/data/test-isn/test-isn.csproj b/test/data/test-isn/test-isn.csproj index fd00bd2..bcad69b 100644 --- a/test/data/test-isn/test-isn.csproj +++ b/test/data/test-isn/test-isn.csproj @@ -1,7 +1,7 @@  Exe - net8.0 + net9.0 test_isn enable enable diff --git a/test/isn.tests/isn.tests.csproj b/test/isn.tests/isn.tests.csproj index bca35bb..fb48094 100644 --- a/test/isn.tests/isn.tests.csproj +++ b/test/isn.tests/isn.tests.csproj @@ -1,6 +1,6 @@  - net8.0 + net9.0 false NETSDK1138 1.0.7.0 @@ -9,11 +9,11 @@ 1.0.7 - - + + - - + + diff --git a/test/isnd.tests/WebServerFixture.cs b/test/isnd.tests/WebServerFixture.cs index 46e0452..1fec0d5 100644 --- a/test/isnd.tests/WebServerFixture.cs +++ b/test/isnd.tests/WebServerFixture.cs @@ -87,7 +87,7 @@ namespace isnd.tests TestingUserName = "Tester"; TestingUser = dbContext.Users.FirstOrDefault(u => u.UserName == TestingUserName); EnsureUser(TestingUserName); - var testKey = dbContext.ApiKeys.FirstOrDefault(k => k.UserId == TestingUser.Id); + var testKey = dbContext.ApiKey.FirstOrDefault(k => k.UserId == TestingUser.Id); if (testKey == null) { var keyProvider = scope.ServiceProvider.GetService();