Skip to content

Commit

Permalink
[WIP] Migration
Browse files Browse the repository at this point in the history
  • Loading branch information
daniel-lerch committed Jan 21, 2024
1 parent ac5623e commit d7a308f
Show file tree
Hide file tree
Showing 13 changed files with 988 additions and 11 deletions.

Large diffs are not rendered by default.

140 changes: 140 additions & 0 deletions server/src/Korga.Server/Migrations/20240121221944_PersonFilterTree.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
using Microsoft.EntityFrameworkCore.Migrations;

#nullable disable

namespace Korga.Server.Migrations
{
/// <inheritdoc />
public partial class PersonFilterTree : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_PersonFilters_DistributionLists_DistributionListId",
table: "PersonFilters");

migrationBuilder.DropIndex(
name: "IX_PersonFilters_DistributionListId",
table: "PersonFilters");

migrationBuilder.DropColumn(
name: "DistributionListId",
table: "PersonFilters");

migrationBuilder.AddColumn<int>(
name: "GroupTypeId",
table: "PersonFilters",
type: "int",
nullable: true);

migrationBuilder.AddColumn<long>(
name: "ParentId",
table: "PersonFilters",
type: "bigint",
nullable: true);

migrationBuilder.AddColumn<long>(
name: "PermittedRecipientsId",
table: "DistributionLists",
type: "bigint",
nullable: true);

migrationBuilder.CreateIndex(
name: "IX_PersonFilters_GroupTypeId",
table: "PersonFilters",
column: "GroupTypeId");

migrationBuilder.CreateIndex(
name: "IX_PersonFilters_ParentId",
table: "PersonFilters",
column: "ParentId");

migrationBuilder.CreateIndex(
name: "IX_DistributionLists_PermittedRecipientsId",
table: "DistributionLists",
column: "PermittedRecipientsId");

migrationBuilder.AddForeignKey(
name: "FK_DistributionLists_PersonFilters_PermittedRecipientsId",
table: "DistributionLists",
column: "PermittedRecipientsId",
principalTable: "PersonFilters",
principalColumn: "Id");

migrationBuilder.AddForeignKey(
name: "FK_PersonFilters_GroupTypes_GroupTypeId",
table: "PersonFilters",
column: "GroupTypeId",
principalTable: "GroupTypes",
principalColumn: "Id");

migrationBuilder.AddForeignKey(
name: "FK_PersonFilters_PersonFilters_ParentId",
table: "PersonFilters",
column: "ParentId",
principalTable: "PersonFilters",
principalColumn: "Id");
}

/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_DistributionLists_PersonFilters_PermittedRecipientsId",
table: "DistributionLists");

migrationBuilder.DropForeignKey(
name: "FK_PersonFilters_GroupTypes_GroupTypeId",
table: "PersonFilters");

migrationBuilder.DropForeignKey(
name: "FK_PersonFilters_PersonFilters_ParentId",
table: "PersonFilters");

migrationBuilder.DropIndex(
name: "IX_PersonFilters_GroupTypeId",
table: "PersonFilters");

migrationBuilder.DropIndex(
name: "IX_PersonFilters_ParentId",
table: "PersonFilters");

migrationBuilder.DropIndex(
name: "IX_DistributionLists_PermittedRecipientsId",
table: "DistributionLists");

migrationBuilder.DropColumn(
name: "GroupTypeId",
table: "PersonFilters");

migrationBuilder.DropColumn(
name: "ParentId",
table: "PersonFilters");

migrationBuilder.DropColumn(
name: "PermittedRecipientsId",
table: "DistributionLists");

migrationBuilder.AddColumn<long>(
name: "DistributionListId",
table: "PersonFilters",
type: "bigint",
nullable: false,
defaultValue: 0L);

migrationBuilder.CreateIndex(
name: "IX_PersonFilters_DistributionListId",
table: "PersonFilters",
column: "DistributionListId");

migrationBuilder.AddForeignKey(
name: "FK_PersonFilters_DistributionLists_DistributionListId",
table: "PersonFilters",
column: "DistributionListId",
principalTable: "DistributionLists",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
}
}
}
84 changes: 73 additions & 11 deletions server/src/Korga.Server/Migrations/DatabaseContextModelSnapshot.cs
Original file line number Diff line number Diff line change
Expand Up @@ -271,10 +271,15 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.Property<int>("Flags")
.HasColumnType("int");

b.Property<long?>("PermittedRecipientsId")
.HasColumnType("bigint");

b.HasKey("Id");

b.HasAlternateKey("Alias");

b.HasIndex("PermittedRecipientsId");

b.ToTable("DistributionLists");
});

Expand Down Expand Up @@ -347,12 +352,12 @@ protected override void BuildModel(ModelBuilder modelBuilder)
.IsRequired()
.HasColumnType("longtext");

b.Property<long>("DistributionListId")
b.Property<long?>("ParentId")
.HasColumnType("bigint");

b.HasKey("Id");

b.HasIndex("DistributionListId");
b.HasIndex("ParentId");

b.ToTable("PersonFilters");

Expand All @@ -369,7 +374,9 @@ protected override void BuildModel(ModelBuilder modelBuilder)
.HasColumnType("int");

b.Property<int?>("GroupRoleId")
.HasColumnType("int");
.ValueGeneratedOnUpdateSometimes()
.HasColumnType("int")
.HasColumnName("GroupRoleId");

b.HasIndex("GroupId");

Expand All @@ -378,6 +385,39 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.HasDiscriminator().HasValue("GroupFilter");
});

modelBuilder.Entity("Korga.EmailRelay.Entities.GroupTypeFilter", b =>
{
b.HasBaseType("Korga.EmailRelay.Entities.PersonFilter");

b.Property<int?>("GroupRoleId")
.ValueGeneratedOnUpdateSometimes()
.HasColumnType("int")
.HasColumnName("GroupRoleId");

b.Property<int?>("GroupTypeId")
.HasColumnType("int");

b.HasIndex("GroupRoleId");

b.HasIndex("GroupTypeId");

b.HasDiscriminator().HasValue("GroupTypeFilter");
});

modelBuilder.Entity("Korga.EmailRelay.Entities.LogicalAnd", b =>
{
b.HasBaseType("Korga.EmailRelay.Entities.PersonFilter");

b.HasDiscriminator().HasValue("LogicalAnd");
});

modelBuilder.Entity("Korga.EmailRelay.Entities.LogicalOr", b =>
{
b.HasBaseType("Korga.EmailRelay.Entities.PersonFilter");

b.HasDiscriminator().HasValue("LogicalOr");
});

modelBuilder.Entity("Korga.EmailRelay.Entities.SinglePerson", b =>
{
b.HasBaseType("Korga.EmailRelay.Entities.PersonFilter");
Expand Down Expand Up @@ -507,6 +547,15 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.Navigation("InboxEmail");
});

modelBuilder.Entity("Korga.EmailRelay.Entities.DistributionList", b =>
{
b.HasOne("Korga.EmailRelay.Entities.PersonFilter", "PermittedRecipients")
.WithMany()
.HasForeignKey("PermittedRecipientsId");

b.Navigation("PermittedRecipients");
});

modelBuilder.Entity("Korga.EmailRelay.Entities.InboxEmail", b =>
{
b.HasOne("Korga.EmailRelay.Entities.DistributionList", "DistributionList")
Expand All @@ -518,13 +567,11 @@ protected override void BuildModel(ModelBuilder modelBuilder)

modelBuilder.Entity("Korga.EmailRelay.Entities.PersonFilter", b =>
{
b.HasOne("Korga.EmailRelay.Entities.DistributionList", "DistributionList")
.WithMany("Filters")
.HasForeignKey("DistributionListId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Korga.EmailRelay.Entities.PersonFilter", "Parent")
.WithMany("Children")
.HasForeignKey("ParentId");

b.Navigation("DistributionList");
b.Navigation("Parent");
});

modelBuilder.Entity("Korga.EmailRelay.Entities.GroupFilter", b =>
Expand All @@ -544,6 +591,21 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.Navigation("GroupRole");
});

modelBuilder.Entity("Korga.EmailRelay.Entities.GroupTypeFilter", b =>
{
b.HasOne("Korga.ChurchTools.Entities.GroupRole", "GroupRole")
.WithMany()
.HasForeignKey("GroupRoleId");

b.HasOne("Korga.ChurchTools.Entities.GroupType", "GroupType")
.WithMany()
.HasForeignKey("GroupTypeId");

b.Navigation("GroupRole");

b.Navigation("GroupType");
});

modelBuilder.Entity("Korga.EmailRelay.Entities.SinglePerson", b =>
{
b.HasOne("Korga.ChurchTools.Entities.Person", "Person")
Expand Down Expand Up @@ -571,9 +633,9 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.Navigation("Departments");
});

modelBuilder.Entity("Korga.EmailRelay.Entities.DistributionList", b =>
modelBuilder.Entity("Korga.EmailRelay.Entities.PersonFilter", b =>
{
b.Navigation("Filters");
b.Navigation("Children");
});
#pragma warning restore 612, 618
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using Microsoft.EntityFrameworkCore;

namespace Korga.Server.Tests.Migrations.GroupMemberStatus;

public class DatabaseContext : DbContext
{
public DatabaseContext(DbContextOptions<DatabaseContext> options) : base(options) { }

public DbSet<DistributionList> DistributionLists => Set<DistributionList>();
public DbSet<PersonFilter> PersonFilters => Set<PersonFilter>();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace Korga.Server.Tests.Migrations.GroupMemberStatus;

public class DistributionList
{
public required long Id { get; set; }
public required string Alias { get; set; }
public int Flags { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
using Korga.ChurchTools.Entities;

namespace Korga.Server.Tests.Migrations.GroupMemberStatus;

public class GroupFilter : PersonFilter
{
public Group? Group { get; set; }
public int GroupId { get; set; }

public GroupRole? GroupRole { get; set; }
public int? GroupRoleId { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace Korga.Server.Tests.Migrations.GroupMemberStatus;

public abstract class PersonFilter
{
public long Id { get; set; }
public long DistributionListId { get; set; }
public DistributionList? DistributionList { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
using Korga.ChurchTools.Entities;

namespace Korga.Server.Tests.Migrations.GroupMemberStatus;

public class SinglePerson : PersonFilter
{
public Person? Person { get; set; }
public int PersonId { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
using Korga.ChurchTools.Entities;

namespace Korga.Server.Tests.Migrations.GroupMemberStatus;

public class StatusFilter : PersonFilter
{
public Status? Status { get; set; }
public int StatusId { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using Microsoft.EntityFrameworkCore;

namespace Korga.Server.Tests.Migrations.PersonFilterTree;

public class DatabaseContext : DbContext
{
public DatabaseContext(DbContextOptions<DatabaseContext> options) : base(options) { }

public DbSet<DistributionList> DistributionLists => Set<DistributionList>();
public DbSet<PersonFilter> PersonFilters => Set<PersonFilter>();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace Korga.Server.Tests.Migrations.PersonFilterTree;

public class DistributionList
{
public required long Id { get; set; }
public required string Alias { get; set; }
public int Flags { get; set; }
public long? PermittedRecipientsId { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace Korga.Server.Tests.Migrations.PersonFilterTree;

public abstract class PersonFilter
{
public long Id { get; set; }

public long? ParentId { get; set; }
public PersonFilter? Parent { get; set; }
}
Loading

0 comments on commit d7a308f

Please sign in to comment.