MCDO fixes

add groups to individuals stuff

don't show your own data lmao

don't allow to share to not joined groups

fix shared bug maybe

fucking braces

improve CharaDataGetShared()

remove unnecessary double-query on get shared data

optimize

remove shit
This commit is contained in:
Stanley Dimant
2025-01-12 12:46:26 +01:00
committed by Loporrit
parent f225323c40
commit 156c3d80ed
9 changed files with 1327 additions and 65 deletions

View File

@@ -122,7 +122,10 @@ public class MareDbContext : DbContext
mb.Entity<CharaDataOriginalFile>().HasKey(c => new { c.ParentId, c.ParentUploaderUID, c.GamePath });
mb.Entity<CharaDataOriginalFile>().HasIndex(c => c.ParentId);
mb.Entity<CharaDataAllowance>().ToTable("chara_data_allowance");
mb.Entity<CharaDataAllowance>().HasKey(c => new { c.ParentId, c.ParentUploaderUID, c.AllowedUserUID });
mb.Entity<CharaDataAllowance>().HasKey(c => new { c.ParentId, c.ParentUploaderUID, c.Id });
mb.Entity<CharaDataAllowance>().Property(p => p.Id).ValueGeneratedOnAdd();
mb.Entity<CharaDataAllowance>().HasIndex(c => c.ParentId);
mb.Entity<CharaDataAllowance>().HasOne(u => u.AllowedGroup).WithMany().HasForeignKey(u => u.AllowedGroupGID).OnDelete(DeleteBehavior.Cascade);
mb.Entity<CharaDataAllowance>().HasOne(u => u.AllowedUser).WithMany().HasForeignKey(u => u.AllowedUserUID).OnDelete(DeleteBehavior.Cascade);
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,98 @@
using Microsoft.EntityFrameworkCore.Migrations;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace MareSynchronosServer.Migrations
{
/// <inheritdoc />
public partial class AllowedGroup : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropPrimaryKey(
name: "pk_chara_data_allowance",
table: "chara_data_allowance");
migrationBuilder.AlterColumn<string>(
name: "allowed_user_uid",
table: "chara_data_allowance",
type: "character varying(10)",
nullable: true,
oldClrType: typeof(string),
oldType: "character varying(10)");
migrationBuilder.AddColumn<long>(
name: "id",
table: "chara_data_allowance",
type: "bigint",
nullable: false,
defaultValue: 0L)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
migrationBuilder.AddColumn<string>(
name: "allowed_group_gid",
table: "chara_data_allowance",
type: "character varying(20)",
nullable: true);
migrationBuilder.AddPrimaryKey(
name: "pk_chara_data_allowance",
table: "chara_data_allowance",
columns: new[] { "parent_id", "parent_uploader_uid", "id" });
migrationBuilder.CreateIndex(
name: "ix_chara_data_allowance_allowed_group_gid",
table: "chara_data_allowance",
column: "allowed_group_gid");
migrationBuilder.AddForeignKey(
name: "fk_chara_data_allowance_groups_allowed_group_gid",
table: "chara_data_allowance",
column: "allowed_group_gid",
principalTable: "groups",
principalColumn: "gid",
onDelete: ReferentialAction.Cascade);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "fk_chara_data_allowance_groups_allowed_group_gid",
table: "chara_data_allowance");
migrationBuilder.DropPrimaryKey(
name: "pk_chara_data_allowance",
table: "chara_data_allowance");
migrationBuilder.DropIndex(
name: "ix_chara_data_allowance_allowed_group_gid",
table: "chara_data_allowance");
migrationBuilder.DropColumn(
name: "id",
table: "chara_data_allowance");
migrationBuilder.DropColumn(
name: "allowed_group_gid",
table: "chara_data_allowance");
migrationBuilder.AlterColumn<string>(
name: "allowed_user_uid",
table: "chara_data_allowance",
type: "character varying(10)",
nullable: false,
defaultValue: "",
oldClrType: typeof(string),
oldType: "character varying(10)",
oldNullable: true);
migrationBuilder.AddPrimaryKey(
name: "pk_chara_data_allowance",
table: "chara_data_allowance",
columns: new[] { "parent_id", "parent_uploader_uid", "allowed_user_uid" });
}
}
}

View File

@@ -161,13 +161,27 @@ namespace MareSynchronosServer.Migrations
.HasColumnType("character varying(10)")
.HasColumnName("parent_uploader_uid");
b.Property<long>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("bigint")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<long>("Id"));
b.Property<string>("AllowedGroupGID")
.HasColumnType("character varying(20)")
.HasColumnName("allowed_group_gid");
b.Property<string>("AllowedUserUID")
.HasColumnType("character varying(10)")
.HasColumnName("allowed_user_uid");
b.HasKey("ParentId", "ParentUploaderUID", "AllowedUserUID")
b.HasKey("ParentId", "ParentUploaderUID", "Id")
.HasName("pk_chara_data_allowance");
b.HasIndex("AllowedGroupGID")
.HasDatabaseName("ix_chara_data_allowance_allowed_group_gid");
b.HasIndex("AllowedUserUID")
.HasDatabaseName("ix_chara_data_allowance_allowed_user_uid");
@@ -737,11 +751,16 @@ namespace MareSynchronosServer.Migrations
modelBuilder.Entity("MareSynchronosShared.Models.CharaDataAllowance", b =>
{
b.HasOne("MareSynchronosShared.Models.Group", "AllowedGroup")
.WithMany()
.HasForeignKey("AllowedGroupGID")
.OnDelete(DeleteBehavior.Cascade)
.HasConstraintName("fk_chara_data_allowance_groups_allowed_group_gid");
b.HasOne("MareSynchronosShared.Models.User", "AllowedUser")
.WithMany()
.HasForeignKey("AllowedUserUID")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_chara_data_allowance_users_allowed_user_uid");
b.HasOne("MareSynchronosShared.Models.CharaData", "Parent")
@@ -751,6 +770,8 @@ namespace MareSynchronosServer.Migrations
.IsRequired()
.HasConstraintName("fk_chara_data_allowance_chara_data_parent_id_parent_uploader_u");
b.Navigation("AllowedGroup");
b.Navigation("AllowedUser");
b.Navigation("Parent");

View File

@@ -40,11 +40,15 @@ public class CharaData
public class CharaDataAllowance
{
[Key]
public long Id { get; set; }
public virtual CharaData Parent { get; set; }
public string ParentId { get; set; }
public string ParentUploaderUID { get; set; }
public virtual User AllowedUser { get; set; }
public string AllowedUserUID { get; set; }
public virtual User? AllowedUser { get; set; }
public string? AllowedUserUID { get; set; }
public virtual Group? AllowedGroup { get; set; }
public string? AllowedGroupGID { get; set; }
}
public class CharaDataOriginalFile