@@ -1,75 +0,0 @@
|
||||
using FastEndpoints;
|
||||
using Knots.DTO.Discussion;
|
||||
using Knots.Models;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.Security.Claims;
|
||||
|
||||
namespace Knots.Endpoints.Discussion;
|
||||
|
||||
public class CreateGroupDiscussionEndpoint(KnotsDbContext db)
|
||||
: Endpoint<CreateGroupDiscussionRequest, GetDiscussionDto>
|
||||
{
|
||||
public override void Configure()
|
||||
{
|
||||
Post("/discussions/group");
|
||||
}
|
||||
|
||||
public override async Task HandleAsync(CreateGroupDiscussionRequest req, CancellationToken ct)
|
||||
{
|
||||
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
|
||||
return;
|
||||
}
|
||||
|
||||
if (targets.Any(t => t.Id == currentUserId))
|
||||
{
|
||||
await SendErrorsAsync(400, ct); // pas de discussion avec soi-même
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
List<UserDiscussion> members = targets
|
||||
.Select(t => new UserDiscussion { UserId = t.Id })
|
||||
.ToList();
|
||||
|
||||
members.Add(new UserDiscussion { UserId = currentUserId });
|
||||
|
||||
Models.Discussion discussion = new()
|
||||
{
|
||||
IsGroup = true,
|
||||
UserDiscussions = members
|
||||
};
|
||||
|
||||
db.Discussions.Add(discussion);
|
||||
await db.SaveChangesAsync(ct);
|
||||
|
||||
await SendOkAsync(new GetDiscussionDto
|
||||
{
|
||||
Id = discussion.Id,
|
||||
IsGroup = true,
|
||||
Name = req.GroupName,
|
||||
MembersCount = members.Count
|
||||
}, ct);
|
||||
}
|
||||
}
|
||||
|
||||
public class CreateGroupDiscussionRequest
|
||||
{
|
||||
public string GroupName { get; set; } = "";
|
||||
public List<string> Usernames { get; set; } = [];
|
||||
}
|
||||
-377
@@ -1,377 +0,0 @@
|
||||
// <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("20260610204450_Discussion")]
|
||||
partial class Discussion
|
||||
{
|
||||
/// <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<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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,170 +0,0 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace Knots.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class Discussion : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_Groups_Discussions_DiscussionId",
|
||||
table: "Groups");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_UserDiscussions_Users_UserId",
|
||||
table: "UserDiscussions");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_Groups_DiscussionId",
|
||||
table: "Groups");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "KeyId",
|
||||
table: "Groups");
|
||||
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "GroupId",
|
||||
table: "Discussions",
|
||||
type: "int",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "GroupUsers",
|
||||
columns: table => new
|
||||
{
|
||||
GroupId = table.Column<int>(type: "int", nullable: false),
|
||||
UserId = table.Column<int>(type: "int", nullable: false),
|
||||
RoleId = table.Column<int>(type: "int", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_GroupUsers", x => new { x.GroupId, x.UserId });
|
||||
table.ForeignKey(
|
||||
name: "FK_GroupUsers_Groups_GroupId",
|
||||
column: x => x.GroupId,
|
||||
principalTable: "Groups",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_GroupUsers_Roles_RoleId",
|
||||
column: x => x.RoleId,
|
||||
principalTable: "Roles",
|
||||
principalColumn: "Id");
|
||||
table.ForeignKey(
|
||||
name: "FK_GroupUsers_Users_UserId",
|
||||
column: x => x.UserId,
|
||||
principalTable: "Users",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Restrict);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_Groups_DiscussionId",
|
||||
table: "Groups",
|
||||
column: "DiscussionId");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_Discussions_GroupId",
|
||||
table: "Discussions",
|
||||
column: "GroupId");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_GroupUsers_RoleId",
|
||||
table: "GroupUsers",
|
||||
column: "RoleId");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_GroupUsers_UserId",
|
||||
table: "GroupUsers",
|
||||
column: "UserId");
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_Discussions_Groups_GroupId",
|
||||
table: "Discussions",
|
||||
column: "GroupId",
|
||||
principalTable: "Groups",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Restrict);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_Groups_Discussions_DiscussionId",
|
||||
table: "Groups",
|
||||
column: "DiscussionId",
|
||||
principalTable: "Discussions",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Restrict);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_UserDiscussions_Users_UserId",
|
||||
table: "UserDiscussions",
|
||||
column: "UserId",
|
||||
principalTable: "Users",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Restrict);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_Discussions_Groups_GroupId",
|
||||
table: "Discussions");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_Groups_Discussions_DiscussionId",
|
||||
table: "Groups");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_UserDiscussions_Users_UserId",
|
||||
table: "UserDiscussions");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "GroupUsers");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_Groups_DiscussionId",
|
||||
table: "Groups");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_Discussions_GroupId",
|
||||
table: "Discussions");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "GroupId",
|
||||
table: "Discussions");
|
||||
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "KeyId",
|
||||
table: "Groups",
|
||||
type: "int",
|
||||
nullable: false,
|
||||
defaultValue: 0);
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_Groups_DiscussionId",
|
||||
table: "Groups",
|
||||
column: "DiscussionId",
|
||||
unique: true);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_Groups_Discussions_DiscussionId",
|
||||
table: "Groups",
|
||||
column: "DiscussionId",
|
||||
principalTable: "Discussions",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_UserDiscussions_Users_UserId",
|
||||
table: "UserDiscussions",
|
||||
column: "UserId",
|
||||
principalTable: "Users",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,16 +33,11 @@ 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");
|
||||
});
|
||||
|
||||
@@ -57,6 +52,9 @@ namespace Knots.Migrations
|
||||
b.Property<int>("DiscussionId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("KeyId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("MembersAmount")
|
||||
.HasColumnType("int");
|
||||
|
||||
@@ -70,31 +68,12 @@ namespace Knots.Migrations
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("DiscussionId");
|
||||
b.HasIndex("DiscussionId")
|
||||
.IsUnique();
|
||||
|
||||
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")
|
||||
@@ -233,50 +212,15 @@ 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")
|
||||
.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")
|
||||
.WithOne("Group")
|
||||
.HasForeignKey("Knots.Models.Group", "DiscussionId")
|
||||
.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");
|
||||
b.Navigation("Discussion");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Knots.Models.Message", b =>
|
||||
@@ -330,7 +274,7 @@ namespace Knots.Migrations
|
||||
b.HasOne("Knots.Models.User", "User")
|
||||
.WithMany("UserDiscussions")
|
||||
.HasForeignKey("UserId")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Discussion");
|
||||
@@ -340,16 +284,13 @@ 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");
|
||||
@@ -357,8 +298,6 @@ namespace Knots.Migrations
|
||||
|
||||
modelBuilder.Entity("Knots.Models.Role", b =>
|
||||
{
|
||||
b.Navigation("GroupUsers");
|
||||
|
||||
b.Navigation("Users");
|
||||
});
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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+af1b14b0d2a889e3bdfbe2f08dac0cf0ef4922f5")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+0b9e01c92578a51eb81cd673aaae95ac56d7c4af")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("Knots")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("Knots")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
@@ -1 +1 @@
|
||||
70071d47fa6a38e032a5e27cb02ec3d498f03b9e5a579b09ce080cdcbf79c5ca
|
||||
b62edb6f2119aec2fe98bcce877c4ef16135c025b03ceefc31d7509622b283ee
|
||||
|
||||
@@ -9,11 +9,11 @@ build_property.EnforceExtendedAnalyzerRules =
|
||||
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||
build_property.RootNamespace = Knots
|
||||
build_property.RootNamespace = Knots
|
||||
build_property.ProjectDir = C:\Users\Carte\RiderProjects\Knots\Knots\
|
||||
build_property.ProjectDir = C:\Users\dogge\RiderProjects\Knots\Knots\
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||
build_property.RazorLangVersion = 8.0
|
||||
build_property.SupportLocalizedComponentNames =
|
||||
build_property.GenerateRazorMetadataSourceChecksumAttributes =
|
||||
build_property.MSBuildProjectDirectory = C:\Users\Carte\RiderProjects\Knots\Knots
|
||||
build_property.MSBuildProjectDirectory = C:\Users\dogge\RiderProjects\Knots\Knots
|
||||
build_property._RazorSourceGeneratorDebug =
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
053df2e2d5f4b0376cb8e5b4fed7175ebe09f3e8d3a4d8035c42b5a7de1f17a9
|
||||
6edaa06a6de0e0e58dbcac8a2a5db11b7c3fa5582c067ae51bfae956cf647dc5
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
a8415ff929068fa8f2ff3412a5ec6274995459d8b2f0bd67ac17c8c58e30ac97
|
||||
2a517ff3e626fe122f9253056129ac168f6d5d47ce545c1f8a40a45a4c220257
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,23 +1,23 @@
|
||||
{
|
||||
"format": 1,
|
||||
"restore": {
|
||||
"C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\Knots.csproj": {}
|
||||
"C:\\Users\\dogge\\RiderProjects\\Knots\\Knots\\Knots.csproj": {}
|
||||
},
|
||||
"projects": {
|
||||
"C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\Knots.csproj": {
|
||||
"C:\\Users\\dogge\\RiderProjects\\Knots\\Knots\\Knots.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\Knots.csproj",
|
||||
"projectUniqueName": "C:\\Users\\dogge\\RiderProjects\\Knots\\Knots\\Knots.csproj",
|
||||
"projectName": "Knots",
|
||||
"projectPath": "C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\Knots.csproj",
|
||||
"packagesPath": "C:\\Users\\Carte\\.nuget\\packages\\",
|
||||
"outputPath": "C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\obj\\",
|
||||
"projectPath": "C:\\Users\\dogge\\RiderProjects\\Knots\\Knots\\Knots.csproj",
|
||||
"packagesPath": "C:\\Users\\dogge\\.nuget\\packages\\",
|
||||
"outputPath": "C:\\Users\\dogge\\RiderProjects\\Knots\\Knots\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"fallbackFolders": [
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
||||
],
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\Carte\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Users\\dogge\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||
],
|
||||
@@ -119,7 +119,7 @@
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Users\\Carte\\.dotnet\\sdk\\8.0.421/PortableRuntimeIdentifierGraph.json"
|
||||
"runtimeIdentifierGraphPath": "C:\\Users\\dogge\\.dotnet\\sdk\\8.0.421/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,12 +5,12 @@
|
||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\Carte\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\dogge\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<SourceRoot Include="C:\Users\Carte\.nuget\packages\" />
|
||||
<SourceRoot Include="C:\Users\dogge\.nuget\packages\" />
|
||||
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
|
||||
</ItemGroup>
|
||||
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
@@ -20,7 +20,7 @@
|
||||
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore.design\8.0.25\build\net8.0\Microsoft.EntityFrameworkCore.Design.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore.design\8.0.25\build\net8.0\Microsoft.EntityFrameworkCore.Design.props')" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<PkgMicrosoft_Extensions_ApiDescription_Server Condition=" '$(PkgMicrosoft_Extensions_ApiDescription_Server)' == '' ">C:\Users\Carte\.nuget\packages\microsoft.extensions.apidescription.server\8.0.0</PkgMicrosoft_Extensions_ApiDescription_Server>
|
||||
<PkgMicrosoft_CodeAnalysis_Analyzers Condition=" '$(PkgMicrosoft_CodeAnalysis_Analyzers)' == '' ">C:\Users\Carte\.nuget\packages\microsoft.codeanalysis.analyzers\3.3.3</PkgMicrosoft_CodeAnalysis_Analyzers>
|
||||
<PkgMicrosoft_Extensions_ApiDescription_Server Condition=" '$(PkgMicrosoft_Extensions_ApiDescription_Server)' == '' ">C:\Users\dogge\.nuget\packages\microsoft.extensions.apidescription.server\8.0.0</PkgMicrosoft_Extensions_ApiDescription_Server>
|
||||
<PkgMicrosoft_CodeAnalysis_Analyzers Condition=" '$(PkgMicrosoft_CodeAnalysis_Analyzers)' == '' ">C:\Users\dogge\.nuget\packages\microsoft.codeanalysis.analyzers\3.3.3</PkgMicrosoft_CodeAnalysis_Analyzers>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -6120,23 +6120,23 @@
|
||||
]
|
||||
},
|
||||
"packageFolders": {
|
||||
"C:\\Users\\Carte\\.nuget\\packages\\": {},
|
||||
"C:\\Users\\dogge\\.nuget\\packages\\": {},
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
|
||||
},
|
||||
"project": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\Knots.csproj",
|
||||
"projectUniqueName": "C:\\Users\\dogge\\RiderProjects\\Knots\\Knots\\Knots.csproj",
|
||||
"projectName": "Knots",
|
||||
"projectPath": "C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\Knots.csproj",
|
||||
"packagesPath": "C:\\Users\\Carte\\.nuget\\packages\\",
|
||||
"outputPath": "C:\\Users\\Carte\\RiderProjects\\Knots\\Knots\\obj\\",
|
||||
"projectPath": "C:\\Users\\dogge\\RiderProjects\\Knots\\Knots\\Knots.csproj",
|
||||
"packagesPath": "C:\\Users\\dogge\\.nuget\\packages\\",
|
||||
"outputPath": "C:\\Users\\dogge\\RiderProjects\\Knots\\Knots\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"fallbackFolders": [
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
||||
],
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\Carte\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Users\\dogge\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||
],
|
||||
@@ -6238,7 +6238,7 @@
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Users\\Carte\\.dotnet\\sdk\\8.0.421/PortableRuntimeIdentifierGraph.json"
|
||||
"runtimeIdentifierGraphPath": "C:\\Users\\dogge\\.dotnet\\sdk\\8.0.421/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
17811287059385335
|
||||
17811297224323847
|
||||
@@ -1 +1 @@
|
||||
17811287068653040
|
||||
17811297410231701
|
||||
Reference in New Issue
Block a user