reorganization of database layer

This commit is contained in:
2020-07-25 22:15:58 +02:00
parent 2a86c16b85
commit 110663456d
25 changed files with 471 additions and 370 deletions

View File

@ -0,0 +1,201 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using UserService.DatabaseLayer.DataModels;
namespace UserService.DatabaseLayer.Migrations
{
[DbContext(typeof(UserServiceDbContext))]
[Migration("20200725195658_initial")]
partial class initial
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "3.1.6");
modelBuilder.Entity("UserService.DatabaseLayer.DataModels.Node", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<string>("CommonName")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("Description")
.HasColumnType("TEXT");
b.Property<string>("Discriminator")
.IsRequired()
.HasColumnType("TEXT");
b.Property<int?>("ParentId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("ParentId");
b.ToTable("Node");
b.HasDiscriminator<string>("Discriminator").HasValue("Node");
});
modelBuilder.Entity("UserService.DatabaseLayer.DataModels.UserMember", b =>
{
b.Property<int>("MemberId")
.HasColumnType("INTEGER");
b.Property<int>("UserId")
.HasColumnType("INTEGER");
b.HasKey("MemberId", "UserId");
b.HasIndex("UserId");
b.ToTable("UserMembers");
b.HasData(
new
{
MemberId = -8,
UserId = -7
});
});
modelBuilder.Entity("UserService.DatabaseLayer.DataModels.Member", b =>
{
b.HasBaseType("UserService.DatabaseLayer.DataModels.Node");
b.Property<string>("EMail")
.HasColumnType("TEXT");
b.HasDiscriminator().HasValue("Member");
});
modelBuilder.Entity("UserService.DatabaseLayer.DataModels.OrganizationUnit", b =>
{
b.HasBaseType("UserService.DatabaseLayer.DataModels.Node");
b.Property<int?>("ManagerId")
.HasColumnType("INTEGER");
b.HasIndex("ManagerId");
b.HasDiscriminator().HasValue("OrganizationUnit");
b.HasData(
new
{
Id = -2,
CommonName = "Users"
},
new
{
Id = -1,
CommonName = "Groups"
},
new
{
Id = -6,
CommonName = "Germany",
ParentId = -2
},
new
{
Id = -5,
CommonName = "USA",
ParentId = -2
},
new
{
Id = -4,
CommonName = "Arizona",
ParentId = -5
},
new
{
Id = -3,
CommonName = "France",
ParentId = -2
});
});
modelBuilder.Entity("UserService.DatabaseLayer.DataModels.SecurityGroup", b =>
{
b.HasBaseType("UserService.DatabaseLayer.DataModels.Member");
b.HasDiscriminator().HasValue("SecurityGroup");
b.HasData(
new
{
Id = -8,
CommonName = "Global Admin",
ParentId = -1
});
});
modelBuilder.Entity("UserService.DatabaseLayer.DataModels.User", b =>
{
b.HasBaseType("UserService.DatabaseLayer.DataModels.Member");
b.Property<string>("FirstName")
.HasColumnType("TEXT");
b.Property<bool>("IsActive")
.HasColumnType("INTEGER");
b.Property<string>("LastName")
.HasColumnType("TEXT");
b.HasDiscriminator().HasValue("User");
b.HasData(
new
{
Id = -7,
CommonName = "holger",
ParentId = -6,
IsActive = true
});
});
modelBuilder.Entity("UserService.DatabaseLayer.DataModels.Node", b =>
{
b.HasOne("UserService.DatabaseLayer.DataModels.Node", "Parent")
.WithMany("Children")
.HasForeignKey("ParentId");
});
modelBuilder.Entity("UserService.DatabaseLayer.DataModels.UserMember", b =>
{
b.HasOne("UserService.DatabaseLayer.DataModels.Member", "Member")
.WithMany("Members")
.HasForeignKey("MemberId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("UserService.DatabaseLayer.DataModels.User", "User")
.WithMany("MemberOf")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("UserService.DatabaseLayer.DataModels.OrganizationUnit", b =>
{
b.HasOne("UserService.DatabaseLayer.DataModels.Member", "Manager")
.WithMany()
.HasForeignKey("ManagerId");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,136 @@
using Microsoft.EntityFrameworkCore.Migrations;
namespace UserService.DatabaseLayer.Migrations
{
public partial class initial : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Node",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("Sqlite:Autoincrement", true),
CommonName = table.Column<string>(nullable: false),
Description = table.Column<string>(nullable: true),
ParentId = table.Column<int>(nullable: true),
Discriminator = table.Column<string>(nullable: false),
EMail = table.Column<string>(nullable: true),
FirstName = table.Column<string>(nullable: true),
LastName = table.Column<string>(nullable: true),
IsActive = table.Column<bool>(nullable: true),
ManagerId = table.Column<int>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Node", x => x.Id);
table.ForeignKey(
name: "FK_Node_Node_ParentId",
column: x => x.ParentId,
principalTable: "Node",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_Node_Node_ManagerId",
column: x => x.ManagerId,
principalTable: "Node",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "UserMembers",
columns: table => new
{
MemberId = table.Column<int>(nullable: false),
UserId = table.Column<int>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_UserMembers", x => new { x.MemberId, x.UserId });
table.ForeignKey(
name: "FK_UserMembers_Node_MemberId",
column: x => x.MemberId,
principalTable: "Node",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_UserMembers_Node_UserId",
column: x => x.UserId,
principalTable: "Node",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.InsertData(
table: "Node",
columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "ManagerId" },
values: new object[] { -2, "Users", null, "OrganizationUnit", null, null });
migrationBuilder.InsertData(
table: "Node",
columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "ManagerId" },
values: new object[] { -1, "Groups", null, "OrganizationUnit", null, null });
migrationBuilder.InsertData(
table: "Node",
columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "ManagerId" },
values: new object[] { -6, "Germany", null, "OrganizationUnit", -2, null });
migrationBuilder.InsertData(
table: "Node",
columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "ManagerId" },
values: new object[] { -5, "USA", null, "OrganizationUnit", -2, null });
migrationBuilder.InsertData(
table: "Node",
columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "ManagerId" },
values: new object[] { -3, "France", null, "OrganizationUnit", -2, null });
migrationBuilder.InsertData(
table: "Node",
columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "EMail" },
values: new object[] { -8, "Global Admin", null, "SecurityGroup", -1, null });
migrationBuilder.InsertData(
table: "Node",
columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "EMail", "FirstName", "IsActive", "LastName" },
values: new object[] { -7, "holger", null, "User", -6, null, null, true, null });
migrationBuilder.InsertData(
table: "Node",
columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "ManagerId" },
values: new object[] { -4, "Arizona", null, "OrganizationUnit", -5, null });
migrationBuilder.InsertData(
table: "UserMembers",
columns: new[] { "MemberId", "UserId" },
values: new object[] { -8, -7 });
migrationBuilder.CreateIndex(
name: "IX_Node_ParentId",
table: "Node",
column: "ParentId");
migrationBuilder.CreateIndex(
name: "IX_Node_ManagerId",
table: "Node",
column: "ManagerId");
migrationBuilder.CreateIndex(
name: "IX_UserMembers_UserId",
table: "UserMembers",
column: "UserId");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "UserMembers");
migrationBuilder.DropTable(
name: "Node");
}
}
}

View File

@ -0,0 +1,199 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using UserService.DatabaseLayer.DataModels;
namespace UserService.DatabaseLayer.Migrations
{
[DbContext(typeof(UserServiceDbContext))]
partial class UserServiceDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "3.1.6");
modelBuilder.Entity("UserService.DatabaseLayer.DataModels.Node", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<string>("CommonName")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("Description")
.HasColumnType("TEXT");
b.Property<string>("Discriminator")
.IsRequired()
.HasColumnType("TEXT");
b.Property<int?>("ParentId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("ParentId");
b.ToTable("Node");
b.HasDiscriminator<string>("Discriminator").HasValue("Node");
});
modelBuilder.Entity("UserService.DatabaseLayer.DataModels.UserMember", b =>
{
b.Property<int>("MemberId")
.HasColumnType("INTEGER");
b.Property<int>("UserId")
.HasColumnType("INTEGER");
b.HasKey("MemberId", "UserId");
b.HasIndex("UserId");
b.ToTable("UserMembers");
b.HasData(
new
{
MemberId = -8,
UserId = -7
});
});
modelBuilder.Entity("UserService.DatabaseLayer.DataModels.Member", b =>
{
b.HasBaseType("UserService.DatabaseLayer.DataModels.Node");
b.Property<string>("EMail")
.HasColumnType("TEXT");
b.HasDiscriminator().HasValue("Member");
});
modelBuilder.Entity("UserService.DatabaseLayer.DataModels.OrganizationUnit", b =>
{
b.HasBaseType("UserService.DatabaseLayer.DataModels.Node");
b.Property<int?>("ManagerId")
.HasColumnType("INTEGER");
b.HasIndex("ManagerId");
b.HasDiscriminator().HasValue("OrganizationUnit");
b.HasData(
new
{
Id = -2,
CommonName = "Users"
},
new
{
Id = -1,
CommonName = "Groups"
},
new
{
Id = -6,
CommonName = "Germany",
ParentId = -2
},
new
{
Id = -5,
CommonName = "USA",
ParentId = -2
},
new
{
Id = -4,
CommonName = "Arizona",
ParentId = -5
},
new
{
Id = -3,
CommonName = "France",
ParentId = -2
});
});
modelBuilder.Entity("UserService.DatabaseLayer.DataModels.SecurityGroup", b =>
{
b.HasBaseType("UserService.DatabaseLayer.DataModels.Member");
b.HasDiscriminator().HasValue("SecurityGroup");
b.HasData(
new
{
Id = -8,
CommonName = "Global Admin",
ParentId = -1
});
});
modelBuilder.Entity("UserService.DatabaseLayer.DataModels.User", b =>
{
b.HasBaseType("UserService.DatabaseLayer.DataModels.Member");
b.Property<string>("FirstName")
.HasColumnType("TEXT");
b.Property<bool>("IsActive")
.HasColumnType("INTEGER");
b.Property<string>("LastName")
.HasColumnType("TEXT");
b.HasDiscriminator().HasValue("User");
b.HasData(
new
{
Id = -7,
CommonName = "holger",
ParentId = -6,
IsActive = true
});
});
modelBuilder.Entity("UserService.DatabaseLayer.DataModels.Node", b =>
{
b.HasOne("UserService.DatabaseLayer.DataModels.Node", "Parent")
.WithMany("Children")
.HasForeignKey("ParentId");
});
modelBuilder.Entity("UserService.DatabaseLayer.DataModels.UserMember", b =>
{
b.HasOne("UserService.DatabaseLayer.DataModels.Member", "Member")
.WithMany("Members")
.HasForeignKey("MemberId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("UserService.DatabaseLayer.DataModels.User", "User")
.WithMany("MemberOf")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("UserService.DatabaseLayer.DataModels.OrganizationUnit", b =>
{
b.HasOne("UserService.DatabaseLayer.DataModels.Member", "Manager")
.WithMany()
.HasForeignKey("ManagerId");
});
#pragma warning restore 612, 618
}
}
}