diff --git a/Knots/Endpoints/Discussion/CreateGroupDiscussionEndpoint.cs b/Knots/Endpoints/Discussion/CreateGroupDiscussionEndpoint.cs index b8a0201..fd85386 100644 --- a/Knots/Endpoints/Discussion/CreateGroupDiscussionEndpoint.cs +++ b/Knots/Endpoints/Discussion/CreateGroupDiscussionEndpoint.cs @@ -6,8 +6,7 @@ using System.Security.Claims; namespace Knots.Endpoints.Discussion; -public class CreateGroupDiscussionEndpoint(KnotsDbContext db) - : Endpoint +public class CreateGroupDiscussionEndpoint(KnotsDbContext db) : Endpoint { public override void Configure() { @@ -18,52 +17,67 @@ public class CreateGroupDiscussionEndpoint(KnotsDbContext db) { int currentUserId = int.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)!); - if (req.Usernames == null || req.Usernames.Count == 0) { await SendErrorsAsync(400, ct); return; } - List targets = await db.Users .Where(u => req.Usernames.Contains(u.Username!)) .ToListAsync(ct); if (targets.Count != req.Usernames.Count) { - await SendNotFoundAsync(ct); // un ou plusieurs utilisateurs introuvables + await SendNotFoundAsync(ct); return; } if (targets.Any(t => t.Id == currentUserId)) { - await SendErrorsAsync(400, ct); // pas de discussion avec soi-même + await SendErrorsAsync(400, ct); return; } - - List members = targets - .Select(t => new UserDiscussion { UserId = t.Id }) - .ToList(); - - members.Add(new UserDiscussion { UserId = currentUserId }); + int totalMembers = targets.Count + 1; Models.Discussion discussion = new() { IsGroup = true, - UserDiscussions = members + UserDiscussions = targets + .Select(t => new UserDiscussion { UserId = t.Id }) + .Append(new UserDiscussion { UserId = currentUserId }) + .ToList() }; db.Discussions.Add(discussion); + await db.SaveChangesAsync(ct); // discussion.Id disponible + + + Models.Group group = new() + { + Name = req.GroupName, + MembersAmount = totalMembers, + DiscussionId = discussion.Id, + GroupUsers = targets + .Select(t => new GroupUser { UserId = t.Id }) + .Append(new GroupUser { UserId = currentUserId }) + .ToList() + }; + + db.Groups.Add(group); + await db.SaveChangesAsync(ct); // group.Id disponible + + + discussion.GroupId = group.Id; await db.SaveChangesAsync(ct); await SendOkAsync(new GetDiscussionDto { Id = discussion.Id, IsGroup = true, - Name = req.GroupName, - MembersCount = members.Count + Name = group.Name, + MembersCount = totalMembers }, ct); } } diff --git a/Knots/Migrations/20260610224937_FixGroupDiscussion.Designer.cs b/Knots/Migrations/20260610224937_FixGroupDiscussion.Designer.cs new file mode 100644 index 0000000..ddfe896 --- /dev/null +++ b/Knots/Migrations/20260610224937_FixGroupDiscussion.Designer.cs @@ -0,0 +1,380 @@ +// +using System; +using Knots; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Knots.Migrations +{ + [DbContext(typeof(KnotsDbContext))] + [Migration("20260610224937_FixGroupDiscussion")] + partial class FixGroupDiscussion + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.25") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Knots.Models.Discussion", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("datetime2"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("IsGroup") + .HasColumnType("bit"); + + b.HasKey("Id"); + + b.HasIndex("GroupId"); + + b.ToTable("Discussions"); + }); + + modelBuilder.Entity("Knots.Models.Group", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DiscussionId") + .HasColumnType("int"); + + b.Property("MembersAmount") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ProfilePicture") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("DiscussionId"); + + b.ToTable("Groups"); + }); + + modelBuilder.Entity("Knots.Models.GroupUser", b => + { + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("GroupId", "UserId"); + + b.HasIndex("RoleId"); + + b.HasIndex("UserId"); + + b.ToTable("GroupUsers"); + }); + + modelBuilder.Entity("Knots.Models.Key", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("EnKey") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.ToTable("Keys"); + }); + + modelBuilder.Entity("Knots.Models.Message", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("AuthorId") + .HasColumnType("int"); + + b.Property("Contenu") + .IsRequired() + .HasMaxLength(1000) + .HasColumnType("nvarchar(1000)"); + + b.Property("Date") + .HasColumnType("datetime2"); + + b.Property("DiscussionId") + .HasColumnType("int"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("KeyId") + .HasColumnType("int"); + + b.Property("Type") + .HasColumnType("bit"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("DiscussionId"); + + b.HasIndex("GroupId"); + + b.HasIndex("KeyId"); + + b.HasIndex("UserId"); + + b.ToTable("Messages"); + }); + + modelBuilder.Entity("Knots.Models.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Libelle") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.ToTable("Roles"); + }); + + modelBuilder.Entity("Knots.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Description") + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(70) + .HasColumnType("nvarchar(70)"); + + b.Property("Password") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ProfilePicture") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.Property("Tel") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("Knots.Models.UserDiscussion", b => + { + b.Property("UserId") + .HasColumnType("int"); + + b.Property("DiscussionId") + .HasColumnType("int"); + + b.HasKey("UserId", "DiscussionId"); + + b.HasIndex("DiscussionId"); + + b.ToTable("UserDiscussions"); + }); + + modelBuilder.Entity("Knots.Models.Discussion", b => + { + b.HasOne("Knots.Models.Group", "Group") + .WithMany() + .HasForeignKey("GroupId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Group"); + }); + + modelBuilder.Entity("Knots.Models.Group", b => + { + b.HasOne("Knots.Models.Discussion", "Discussion") + .WithMany() + .HasForeignKey("DiscussionId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Discussion"); + }); + + modelBuilder.Entity("Knots.Models.GroupUser", b => + { + b.HasOne("Knots.Models.Group", "Group") + .WithMany("GroupUsers") + .HasForeignKey("GroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Knots.Models.Role", "Role") + .WithMany("GroupUsers") + .HasForeignKey("RoleId"); + + b.HasOne("Knots.Models.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Group"); + + b.Navigation("Role"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Knots.Models.Message", b => + { + b.HasOne("Knots.Models.Discussion", "Discussion") + .WithMany("Messages") + .HasForeignKey("DiscussionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Knots.Models.Group", "Group") + .WithMany() + .HasForeignKey("GroupId"); + + b.HasOne("Knots.Models.Key", "Key") + .WithMany("Messages") + .HasForeignKey("KeyId"); + + b.HasOne("Knots.Models.User", "User") + .WithMany("Messages") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Discussion"); + + b.Navigation("Group"); + + b.Navigation("Key"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Knots.Models.User", b => + { + b.HasOne("Knots.Models.Role", "Role") + .WithMany("Users") + .HasForeignKey("RoleId"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("Knots.Models.UserDiscussion", b => + { + b.HasOne("Knots.Models.Discussion", "Discussion") + .WithMany("UserDiscussions") + .HasForeignKey("DiscussionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Knots.Models.User", "User") + .WithMany("UserDiscussions") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Discussion"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Knots.Models.Discussion", b => + { + b.Navigation("Messages"); + + b.Navigation("UserDiscussions"); + }); + + modelBuilder.Entity("Knots.Models.Group", b => + { + b.Navigation("GroupUsers"); + }); + + modelBuilder.Entity("Knots.Models.Key", b => + { + b.Navigation("Messages"); + }); + + modelBuilder.Entity("Knots.Models.Role", b => + { + b.Navigation("GroupUsers"); + + b.Navigation("Users"); + }); + + modelBuilder.Entity("Knots.Models.User", b => + { + b.Navigation("Messages"); + + b.Navigation("UserDiscussions"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Knots/Migrations/20260610224937_FixGroupDiscussion.cs b/Knots/Migrations/20260610224937_FixGroupDiscussion.cs new file mode 100644 index 0000000..3b64786 --- /dev/null +++ b/Knots/Migrations/20260610224937_FixGroupDiscussion.cs @@ -0,0 +1,21 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Knots.Migrations +{ + /// + public partial class FixGroupDiscussion : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "AuthorId", + table: "Messages", + type: "int", + nullable: false, + defaultValue: 0); + } + + } +} diff --git a/Knots/Migrations/KnotsDbContextModelSnapshot.cs b/Knots/Migrations/KnotsDbContextModelSnapshot.cs index 8e2c6f6..ba31ee3 100644 --- a/Knots/Migrations/KnotsDbContextModelSnapshot.cs +++ b/Knots/Migrations/KnotsDbContextModelSnapshot.cs @@ -33,11 +33,16 @@ namespace Knots.Migrations b.Property("CreatedAt") .HasColumnType("datetime2"); + b.Property("GroupId") + .HasColumnType("int"); + b.Property("IsGroup") .HasColumnType("bit"); b.HasKey("Id"); + b.HasIndex("GroupId"); + b.ToTable("Discussions"); }); @@ -52,9 +57,6 @@ namespace Knots.Migrations b.Property("DiscussionId") .HasColumnType("int"); - b.Property("KeyId") - .HasColumnType("int"); - b.Property("MembersAmount") .HasColumnType("int"); @@ -68,12 +70,31 @@ namespace Knots.Migrations b.HasKey("Id"); - b.HasIndex("DiscussionId") - .IsUnique(); + b.HasIndex("DiscussionId"); b.ToTable("Groups"); }); + modelBuilder.Entity("Knots.Models.GroupUser", b => + { + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.Property("RoleId") + .HasColumnType("int"); + + b.HasKey("GroupId", "UserId"); + + b.HasIndex("RoleId"); + + b.HasIndex("UserId"); + + b.ToTable("GroupUsers"); + }); + modelBuilder.Entity("Knots.Models.Key", b => { b.Property("Id") @@ -100,6 +121,9 @@ namespace Knots.Migrations SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + b.Property("AuthorId") + .HasColumnType("int"); + b.Property("Contenu") .IsRequired() .HasMaxLength(1000) @@ -212,17 +236,52 @@ namespace Knots.Migrations b.ToTable("UserDiscussions"); }); + modelBuilder.Entity("Knots.Models.Discussion", b => + { + b.HasOne("Knots.Models.Group", "Group") + .WithMany() + .HasForeignKey("GroupId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Group"); + }); + modelBuilder.Entity("Knots.Models.Group", b => { b.HasOne("Knots.Models.Discussion", "Discussion") - .WithOne("Group") - .HasForeignKey("Knots.Models.Group", "DiscussionId") - .OnDelete(DeleteBehavior.Cascade) + .WithMany() + .HasForeignKey("DiscussionId") + .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Discussion"); }); + modelBuilder.Entity("Knots.Models.GroupUser", b => + { + b.HasOne("Knots.Models.Group", "Group") + .WithMany("GroupUsers") + .HasForeignKey("GroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Knots.Models.Role", "Role") + .WithMany("GroupUsers") + .HasForeignKey("RoleId"); + + b.HasOne("Knots.Models.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Group"); + + b.Navigation("Role"); + + b.Navigation("User"); + }); + modelBuilder.Entity("Knots.Models.Message", b => { b.HasOne("Knots.Models.Discussion", "Discussion") @@ -274,7 +333,7 @@ namespace Knots.Migrations b.HasOne("Knots.Models.User", "User") .WithMany("UserDiscussions") .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) + .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Discussion"); @@ -284,13 +343,16 @@ namespace Knots.Migrations modelBuilder.Entity("Knots.Models.Discussion", b => { - b.Navigation("Group"); - b.Navigation("Messages"); b.Navigation("UserDiscussions"); }); + modelBuilder.Entity("Knots.Models.Group", b => + { + b.Navigation("GroupUsers"); + }); + modelBuilder.Entity("Knots.Models.Key", b => { b.Navigation("Messages"); @@ -298,6 +360,8 @@ namespace Knots.Migrations modelBuilder.Entity("Knots.Models.Role", b => { + b.Navigation("GroupUsers"); + b.Navigation("Users"); }); diff --git a/Knots/bin/Debug/net8.0/Knots.deps.json b/Knots/bin/Debug/net8.0/Knots.deps.json index 1c1a64f..b86eac9 100644 --- a/Knots/bin/Debug/net8.0/Knots.deps.json +++ b/Knots/bin/Debug/net8.0/Knots.deps.json @@ -15,6 +15,7 @@ "Microsoft.AspNetCore.Authentication": "2.3.11", "Microsoft.AspNetCore.Authentication.JwtBearer": "8.0.28", "Microsoft.AspNetCore.OpenApi": "8.0.25", + "Microsoft.AspNetCore.SignalR": "1.2.11", "Microsoft.EntityFrameworkCore": "8.0.25", "Microsoft.EntityFrameworkCore.Design": "8.0.25", "Microsoft.EntityFrameworkCore.SqlServer": "8.0.25", @@ -173,6 +174,24 @@ } } }, + "Microsoft.AspNetCore.Authorization/2.3.0": { + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0" + } + }, + "Microsoft.AspNetCore.Authorization.Policy/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Authentication.Abstractions": "2.3.9", + "Microsoft.AspNetCore.Authorization": "2.3.0" + } + }, + "Microsoft.AspNetCore.Connections.Abstractions/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Features": "2.3.0", + "System.IO.Pipelines": "8.0.0" + } + }, "Microsoft.AspNetCore.Cryptography.Internal/2.3.9": {}, "Microsoft.AspNetCore.DataProtection/2.3.10": { "dependencies": { @@ -216,6 +235,26 @@ "System.Text.Encodings.Web": "8.0.0" } }, + "Microsoft.AspNetCore.Http.Connections/1.2.0": { + "dependencies": { + "Microsoft.AspNetCore.Authorization.Policy": "2.3.0", + "Microsoft.AspNetCore.Hosting.Abstractions": "2.3.9", + "Microsoft.AspNetCore.Http": "2.3.10", + "Microsoft.AspNetCore.Http.Connections.Common": "1.2.0", + "Microsoft.AspNetCore.Routing": "2.3.0", + "Microsoft.AspNetCore.WebSockets": "2.3.10", + "Newtonsoft.Json": "13.0.3", + "System.Net.WebSockets.WebSocketProtocol": "5.1.0" + } + }, + "Microsoft.AspNetCore.Http.Connections.Common/1.2.0": { + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "2.3.0", + "Newtonsoft.Json": "13.0.3", + "System.Buffers": "4.6.0", + "System.IO.Pipelines": "8.0.0" + } + }, "Microsoft.AspNetCore.Http.Extensions/2.3.10": { "dependencies": { "Microsoft.AspNetCore.Http.Abstractions": "2.3.9", @@ -240,6 +279,62 @@ } } }, + "Microsoft.AspNetCore.Routing/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Extensions": "2.3.10", + "Microsoft.AspNetCore.Routing.Abstractions": "2.3.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Microsoft.Extensions.ObjectPool": "8.0.11", + "Microsoft.Extensions.Options": "10.0.0" + } + }, + "Microsoft.AspNetCore.Routing.Abstractions/2.3.0": { + "dependencies": { + "Microsoft.AspNetCore.Http.Abstractions": "2.3.9" + } + }, + "Microsoft.AspNetCore.SignalR/1.2.11": { + "dependencies": { + "Microsoft.AspNetCore.Http.Connections": "1.2.0", + "Microsoft.AspNetCore.SignalR.Core": "1.2.0", + "Microsoft.AspNetCore.WebSockets": "2.3.10", + "System.IO.Pipelines": "8.0.0" + } + }, + "Microsoft.AspNetCore.SignalR.Common/1.2.0": { + "dependencies": { + "Microsoft.AspNetCore.Connections.Abstractions": "2.3.0", + "Microsoft.Extensions.Options": "10.0.0", + "Newtonsoft.Json": "13.0.3", + "System.Buffers": "4.6.0" + } + }, + "Microsoft.AspNetCore.SignalR.Core/1.2.0": { + "dependencies": { + "Microsoft.AspNetCore.Authorization": "2.3.0", + "Microsoft.AspNetCore.SignalR.Common": "1.2.0", + "Microsoft.AspNetCore.SignalR.Protocols.Json": "1.2.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "System.IO.Pipelines": "8.0.0", + "System.Reflection.Emit": "4.7.0", + "System.Threading.Channels": "8.0.0" + } + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/1.2.0": { + "dependencies": { + "Microsoft.AspNetCore.SignalR.Common": "1.2.0", + "Newtonsoft.Json": "13.0.3", + "System.IO.Pipelines": "8.0.0" + } + }, + "Microsoft.AspNetCore.WebSockets/2.3.10": { + "dependencies": { + "Microsoft.AspNetCore.Http.Extensions": "2.3.10", + "Microsoft.Extensions.Options": "10.0.0", + "System.Net.WebSockets.WebSocketProtocol": "5.1.0" + } + }, "Microsoft.AspNetCore.WebUtilities/2.3.9": { "dependencies": { "Microsoft.Net.Http.Headers": "2.3.9", @@ -424,8 +519,8 @@ "Microsoft.Bcl.AsyncInterfaces": "6.0.0", "Microsoft.CodeAnalysis.Common": "4.5.0", "System.Composition": "6.0.0", - "System.IO.Pipelines": "6.0.3", - "System.Threading.Channels": "6.0.0" + "System.IO.Pipelines": "8.0.0", + "System.Threading.Channels": "8.0.0" }, "runtime": { "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll": { @@ -1218,7 +1313,7 @@ } } }, - "System.IO.Pipelines/6.0.3": {}, + "System.IO.Pipelines/8.0.0": {}, "System.Memory/4.5.4": {}, "System.Memory.Data/1.0.2": { "dependencies": { @@ -1232,7 +1327,16 @@ } } }, + "System.Net.WebSockets.WebSocketProtocol/5.1.0": { + "runtime": { + "lib/net6.0/System.Net.WebSockets.WebSocketProtocol.dll": { + "assemblyVersion": "5.1.0.0", + "fileVersion": "5.100.24.56208" + } + } + }, "System.Numerics.Vectors/4.5.0": {}, + "System.Reflection.Emit/4.7.0": {}, "System.Reflection.Metadata/6.0.1": { "dependencies": { "System.Collections.Immutable": "6.0.0" @@ -1327,7 +1431,7 @@ }, "System.Text.Encodings.Web/8.0.0": {}, "System.Text.Json/8.0.5": {}, - "System.Threading.Channels/6.0.0": {}, + "System.Threading.Channels/8.0.0": {}, "System.Threading.Tasks.Extensions/4.5.4": {}, "System.Windows.Extensions/6.0.0": { "dependencies": { @@ -1462,6 +1566,27 @@ "path": "microsoft.aspnetcore.authentication.jwtbearer/8.0.28", "hashPath": "microsoft.aspnetcore.authentication.jwtbearer.8.0.28.nupkg.sha512" }, + "Microsoft.AspNetCore.Authorization/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-2/aBgLqBXva/+w8pzRNY8ET43Gi+dr1gv/7ySfbsh23lTK6IAgID5MGUEa1hreNIF+0XpW4tX7QwVe70+YvaPg==", + "path": "microsoft.aspnetcore.authorization/2.3.0", + "hashPath": "microsoft.aspnetcore.authorization.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Authorization.Policy/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-vn31uQ1dA1MIV2WNNDOOOm88V5KgR9esfi0LyQ6eVaGq2h0Yw+R29f5A6qUNJt+RccS3qkYayylAy9tP1wV+7Q==", + "path": "microsoft.aspnetcore.authorization.policy/2.3.0", + "hashPath": "microsoft.aspnetcore.authorization.policy.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Connections.Abstractions/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ULFSa+/L+WiAHVlIFHyg0OmHChU9Hx+K+xnt0hbIU5XmT1EGy0pNDx23QAzDtAy9jxQrTG6MX0MdvMeU4D4c7w==", + "path": "microsoft.aspnetcore.connections.abstractions/2.3.0", + "hashPath": "microsoft.aspnetcore.connections.abstractions.2.3.0.nupkg.sha512" + }, "Microsoft.AspNetCore.Cryptography.Internal/2.3.9": { "type": "package", "serviceable": true, @@ -1511,6 +1636,20 @@ "path": "microsoft.aspnetcore.http.abstractions/2.3.9", "hashPath": "microsoft.aspnetcore.http.abstractions.2.3.9.nupkg.sha512" }, + "Microsoft.AspNetCore.Http.Connections/1.2.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VYMCOLvdT0y3O9lk4jUuIs8+re7u5+i+ka6ZZ6fIzSJ94c/JeMnAOOg39EB2i4crPXvLoiSdzKWlNPJgTbCZ2g==", + "path": "microsoft.aspnetcore.http.connections/1.2.0", + "hashPath": "microsoft.aspnetcore.http.connections.1.2.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Http.Connections.Common/1.2.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yUA7eg6kv7Wbz5TCW4PqS5/kYE5VxUIEDvoxjw4p1RwS2LGm84F9fBtM0mD6wrRfiv1NUyJ7WBjn3PWd/ccO+w==", + "path": "microsoft.aspnetcore.http.connections.common/1.2.0", + "hashPath": "microsoft.aspnetcore.http.connections.common.1.2.0.nupkg.sha512" + }, "Microsoft.AspNetCore.Http.Extensions/2.3.10": { "type": "package", "serviceable": true, @@ -1532,6 +1671,55 @@ "path": "microsoft.aspnetcore.openapi/8.0.25", "hashPath": "microsoft.aspnetcore.openapi.8.0.25.nupkg.sha512" }, + "Microsoft.AspNetCore.Routing/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-no5/VC0CAQuT4PK4rp2K5fqwuSfzr2mdB6m1XNfWVhHnwzpRQzKAu9flChiT/JTLKwVI0Vq2MSmSW2OFMDCNXg==", + "path": "microsoft.aspnetcore.routing/2.3.0", + "hashPath": "microsoft.aspnetcore.routing.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.Routing.Abstractions/2.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZkFpUrSmp6TocxZLBEX3IBv5dPMbQuMs6L/BPl0WRfn32UVOtNYJQ0bLdh3cL9LMV0rmTW/5R0w8CBYxr0AOUw==", + "path": "microsoft.aspnetcore.routing.abstractions/2.3.0", + "hashPath": "microsoft.aspnetcore.routing.abstractions.2.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR/1.2.11": { + "type": "package", + "serviceable": true, + "sha512": "sha512-fq/EW3G4S+1Xo3aX042Geb/mm+cqStB7cw7FmXLhgpXbsO6dXbU/78URRqpiMozAHjpqSK9BVRkhYhnCg5fgew==", + "path": "microsoft.aspnetcore.signalr/1.2.11", + "hashPath": "microsoft.aspnetcore.signalr.1.2.11.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Common/1.2.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FZeXIaoWqe145ZPdfiptwkw/sP1BX1UD0706GNBwwoaFiKsNbLEl/Trhj2+idlp3qbX1BEwkQesKNxkopVY5Xg==", + "path": "microsoft.aspnetcore.signalr.common/1.2.0", + "hashPath": "microsoft.aspnetcore.signalr.common.1.2.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Core/1.2.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-eZTuMkSDw1uwjhLhJbMxgW2Cuyxfn0Kfqm8OBmqvuzE9Qc/VVzh8dGrAp2F9Pk7XKTDHmlhc5RTLcPPAZ5PSZw==", + "path": "microsoft.aspnetcore.signalr.core/1.2.0", + "hashPath": "microsoft.aspnetcore.signalr.core.1.2.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.SignalR.Protocols.Json/1.2.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-hNvZ7kQxp5Udqd/IFWViU35bUJvi4xnNzjkF28HRvrdrS7JNsIASTvMqArP6HLQUc3j6nlUOeShNhVmgI1wzHg==", + "path": "microsoft.aspnetcore.signalr.protocols.json/1.2.0", + "hashPath": "microsoft.aspnetcore.signalr.protocols.json.1.2.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.WebSockets/2.3.10": { + "type": "package", + "serviceable": true, + "sha512": "sha512-m0wkzmyKxi0J42ldZ6P+YCnEO3Djvoyw4vDoROwPM8J/1/H19/qoYNgYmQkrwOD5OAtc6GFcnifPUOE6XqeQZA==", + "path": "microsoft.aspnetcore.websockets/2.3.10", + "hashPath": "microsoft.aspnetcore.websockets.2.3.10.nupkg.sha512" + }, "Microsoft.AspNetCore.WebUtilities/2.3.9": { "type": "package", "serviceable": true, @@ -2071,12 +2259,12 @@ "path": "system.identitymodel.tokens.jwt/7.1.2", "hashPath": "system.identitymodel.tokens.jwt.7.1.2.nupkg.sha512" }, - "System.IO.Pipelines/6.0.3": { + "System.IO.Pipelines/8.0.0": { "type": "package", "serviceable": true, - "sha512": "sha512-ryTgF+iFkpGZY1vRQhfCzX0xTdlV3pyaTTqRu2ETbEv+HlV7O6y7hyQURnghNIXvctl5DuZ//Dpks6HdL/Txgw==", - "path": "system.io.pipelines/6.0.3", - "hashPath": "system.io.pipelines.6.0.3.nupkg.sha512" + "sha512": "sha512-FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==", + "path": "system.io.pipelines/8.0.0", + "hashPath": "system.io.pipelines.8.0.0.nupkg.sha512" }, "System.Memory/4.5.4": { "type": "package", @@ -2092,6 +2280,13 @@ "path": "system.memory.data/1.0.2", "hashPath": "system.memory.data.1.0.2.nupkg.sha512" }, + "System.Net.WebSockets.WebSocketProtocol/5.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-cVTT/Zw4JuUeX8H0tdWii0OMHsA5MY2PaFYOq/Hstw0jk479jZ+f8baCicWFNzJlCPWAe0uoNCELoB5eNmaMqA==", + "path": "system.net.websockets.websocketprotocol/5.1.0", + "hashPath": "system.net.websockets.websocketprotocol.5.1.0.nupkg.sha512" + }, "System.Numerics.Vectors/4.5.0": { "type": "package", "serviceable": true, @@ -2099,6 +2294,13 @@ "path": "system.numerics.vectors/4.5.0", "hashPath": "system.numerics.vectors.4.5.0.nupkg.sha512" }, + "System.Reflection.Emit/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VR4kk8XLKebQ4MZuKuIni/7oh+QGFmZW3qORd1GvBq/8026OpW501SzT/oypwiQl4TvT8ErnReh/NzY9u+C6wQ==", + "path": "system.reflection.emit/4.7.0", + "hashPath": "system.reflection.emit.4.7.0.nupkg.sha512" + }, "System.Reflection.Metadata/6.0.1": { "type": "package", "serviceable": true, @@ -2190,12 +2392,12 @@ "path": "system.text.json/8.0.5", "hashPath": "system.text.json.8.0.5.nupkg.sha512" }, - "System.Threading.Channels/6.0.0": { + "System.Threading.Channels/8.0.0": { "type": "package", "serviceable": true, - "sha512": "sha512-TY8/9+tI0mNaUMgntOxxaq2ndTkdXqLSxvPmas7XEqOlv9lQtB7wLjYGd756lOaO7Dvb5r/WXhluM+0Xe87v5Q==", - "path": "system.threading.channels/6.0.0", - "hashPath": "system.threading.channels.6.0.0.nupkg.sha512" + "sha512": "sha512-CMaFr7v+57RW7uZfZkPExsPB6ljwzhjACWW1gfU35Y56rk72B/Wu+sTqxVmGSk4SFUlPc3cjeKND0zktziyjBA==", + "path": "system.threading.channels/8.0.0", + "hashPath": "system.threading.channels.8.0.0.nupkg.sha512" }, "System.Threading.Tasks.Extensions/4.5.4": { "type": "package", diff --git a/Knots/obj/Debug/net8.0/Knots.AssemblyInfo.cs b/Knots/obj/Debug/net8.0/Knots.AssemblyInfo.cs index c5dd044..8d256fd 100644 --- a/Knots/obj/Debug/net8.0/Knots.AssemblyInfo.cs +++ b/Knots/obj/Debug/net8.0/Knots.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Knots")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e6021dcc619fd4151caff82644b9bda369ef15fd")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+c23cc4a03ae52f47eafbe25e0cc80cb4fb9f6ea5")] [assembly: System.Reflection.AssemblyProductAttribute("Knots")] [assembly: System.Reflection.AssemblyTitleAttribute("Knots")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Knots/obj/Debug/net8.0/Knots.AssemblyInfoInputs.cache b/Knots/obj/Debug/net8.0/Knots.AssemblyInfoInputs.cache index 634f18e..30f669f 100644 --- a/Knots/obj/Debug/net8.0/Knots.AssemblyInfoInputs.cache +++ b/Knots/obj/Debug/net8.0/Knots.AssemblyInfoInputs.cache @@ -1 +1 @@ -c634a46dc11c9265972dbfd647e5dc8eb04ef78a5549341a950a2b63f97dc490 +e5304a727d82ba542c9bb954ebc4222e904b2567df2dbba7f580fb779a556b3e diff --git a/Knots/obj/Debug/net8.0/Knots.csproj.CoreCompileInputs.cache b/Knots/obj/Debug/net8.0/Knots.csproj.CoreCompileInputs.cache index 6e6fa9a..6fdabe8 100644 --- a/Knots/obj/Debug/net8.0/Knots.csproj.CoreCompileInputs.cache +++ b/Knots/obj/Debug/net8.0/Knots.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -bab9e1ed6ec5ae3422f4377cfa8a1795b3c9881cbfdada74a84426e15b5819ff +1afb5c57f375954b5501d52f6ccbfcdd0c9a4a7d75abca85439c878c12264607 diff --git a/Knots/obj/Debug/net8.0/Knots.csproj.FileListAbsolute.txt b/Knots/obj/Debug/net8.0/Knots.csproj.FileListAbsolute.txt index 178a047..702bcdf 100644 --- a/Knots/obj/Debug/net8.0/Knots.csproj.FileListAbsolute.txt +++ b/Knots/obj/Debug/net8.0/Knots.csproj.FileListAbsolute.txt @@ -519,3 +519,4 @@ C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\Knots.pdb C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\Knots.genruntimeconfig.cache C:\Users\dogge\RiderProjects\Knots\Knots\obj\Debug\net8.0\ref\Knots.dll C:\Users\dogge\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Net.WebSockets.WebSocketProtocol.dll +C:\Users\Carte\RiderProjects\Knots\Knots\bin\Debug\net8.0\System.Net.WebSockets.WebSocketProtocol.dll diff --git a/Knots/obj/Debug/net8.0/Knots.genruntimeconfig.cache b/Knots/obj/Debug/net8.0/Knots.genruntimeconfig.cache index 16f6a8e..485d9cc 100644 --- a/Knots/obj/Debug/net8.0/Knots.genruntimeconfig.cache +++ b/Knots/obj/Debug/net8.0/Knots.genruntimeconfig.cache @@ -1 +1 @@ -2a517ff3e626fe122f9253056129ac168f6d5d47ce545c1f8a40a45a4c220257 +a8415ff929068fa8f2ff3412a5ec6274995459d8b2f0bd67ac17c8c58e30ac97 diff --git a/Knots/obj/rider.project.model.nuget.info b/Knots/obj/rider.project.model.nuget.info index 22aa449..2e8a5c1 100644 --- a/Knots/obj/rider.project.model.nuget.info +++ b/Knots/obj/rider.project.model.nuget.info @@ -1 +1 @@ -17811297224323847 \ No newline at end of file +17811341755994334 \ No newline at end of file diff --git a/Knots/obj/rider.project.restore.info b/Knots/obj/rider.project.restore.info index 7f1db67..c9624e6 100644 --- a/Knots/obj/rider.project.restore.info +++ b/Knots/obj/rider.project.restore.info @@ -1 +1 @@ -17811297410231701 \ No newline at end of file +17811341972143664 \ No newline at end of file