commit blabla3
This commit is contained in:
@@ -6,8 +6,7 @@ using System.Security.Claims;
|
||||
|
||||
namespace Knots.Endpoints.Discussion;
|
||||
|
||||
public class CreateGroupDiscussionEndpoint(KnotsDbContext db)
|
||||
: Endpoint<CreateGroupDiscussionRequest, GetDiscussionDto>
|
||||
public class CreateGroupDiscussionEndpoint(KnotsDbContext db) : Endpoint<CreateGroupDiscussionRequest, GetDiscussionDto>
|
||||
{
|
||||
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<Models.User> 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<UserDiscussion> 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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,380 @@
|
||||
// <auto-generated />
|
||||
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
|
||||
{
|
||||
/// <inheritdoc />
|
||||
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<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<DateTime>("CreatedAt")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<int?>("GroupId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<bool>("IsGroup")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("GroupId");
|
||||
|
||||
b.ToTable("Discussions");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Knots.Models.Group", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<int>("DiscussionId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("MembersAmount")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("nvarchar(50)");
|
||||
|
||||
b.Property<string>("ProfilePicture")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("DiscussionId");
|
||||
|
||||
b.ToTable("Groups");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Knots.Models.GroupUser", b =>
|
||||
{
|
||||
b.Property<int>("GroupId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("UserId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int?>("RoleId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.HasKey("GroupId", "UserId");
|
||||
|
||||
b.HasIndex("RoleId");
|
||||
|
||||
b.HasIndex("UserId");
|
||||
|
||||
b.ToTable("GroupUsers");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Knots.Models.Key", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<string>("EnKey")
|
||||
.IsRequired()
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("nvarchar(50)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("Keys");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Knots.Models.Message", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<int>("AuthorId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("Contenu")
|
||||
.IsRequired()
|
||||
.HasMaxLength(1000)
|
||||
.HasColumnType("nvarchar(1000)");
|
||||
|
||||
b.Property<DateTime>("Date")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<int>("DiscussionId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int?>("GroupId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int?>("KeyId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<bool>("Type")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<int>("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<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<string>("Libelle")
|
||||
.IsRequired()
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("nvarchar(50)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("Roles");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Knots.Models.User", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<string>("Description")
|
||||
.HasMaxLength(200)
|
||||
.HasColumnType("nvarchar(200)");
|
||||
|
||||
b.Property<string>("Email")
|
||||
.IsRequired()
|
||||
.HasMaxLength(70)
|
||||
.HasColumnType("nvarchar(70)");
|
||||
|
||||
b.Property<string>("Password")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("ProfilePicture")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<int?>("RoleId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("Tel")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("Username")
|
||||
.IsRequired()
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("nvarchar(50)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("RoleId");
|
||||
|
||||
b.ToTable("Users");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Knots.Models.UserDiscussion", b =>
|
||||
{
|
||||
b.Property<int>("UserId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace Knots.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class FixGroupDiscussion : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "AuthorId",
|
||||
table: "Messages",
|
||||
type: "int",
|
||||
nullable: false,
|
||||
defaultValue: 0);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -33,11 +33,16 @@ namespace Knots.Migrations
|
||||
b.Property<DateTime>("CreatedAt")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<int?>("GroupId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<bool>("IsGroup")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("GroupId");
|
||||
|
||||
b.ToTable("Discussions");
|
||||
});
|
||||
|
||||
@@ -52,9 +57,6 @@ namespace Knots.Migrations
|
||||
b.Property<int>("DiscussionId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("KeyId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("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<int>("GroupId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("UserId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int?>("RoleId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.HasKey("GroupId", "UserId");
|
||||
|
||||
b.HasIndex("RoleId");
|
||||
|
||||
b.HasIndex("UserId");
|
||||
|
||||
b.ToTable("GroupUsers");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Knots.Models.Key", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
@@ -100,6 +121,9 @@ namespace Knots.Migrations
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<int>("AuthorId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("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");
|
||||
});
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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")]
|
||||
|
||||
@@ -1 +1 @@
|
||||
c634a46dc11c9265972dbfd647e5dc8eb04ef78a5549341a950a2b63f97dc490
|
||||
e5304a727d82ba542c9bb954ebc4222e904b2567df2dbba7f580fb779a556b3e
|
||||
|
||||
@@ -1 +1 @@
|
||||
bab9e1ed6ec5ae3422f4377cfa8a1795b3c9881cbfdada74a84426e15b5819ff
|
||||
1afb5c57f375954b5501d52f6ccbfcdd0c9a4a7d75abca85439c878c12264607
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1 +1 @@
|
||||
2a517ff3e626fe122f9253056129ac168f6d5d47ce545c1f8a40a45a4c220257
|
||||
a8415ff929068fa8f2ff3412a5ec6274995459d8b2f0bd67ac17c8c58e30ac97
|
||||
|
||||
@@ -1 +1 @@
|
||||
17811297224323847
|
||||
17811341755994334
|
||||
@@ -1 +1 @@
|
||||
17811297410231701
|
||||
17811341972143664
|
||||
Reference in New Issue
Block a user