UserService/UserService/DataModels/ModelBuilderExtensions.cs

40 lines
1.6 KiB
C#

using Microsoft.EntityFrameworkCore;
namespace UserService.DataModels
{
public static class ModelBuilderExtensions
{
public static void Seed(this ModelBuilder modelBuilder)
{
var users = new OrganizationUnit {CommonName = "Users", Id = -2};
var groups = new OrganizationUnit {CommonName = "Groups", Id = -1};
modelBuilder.Entity<OrganizationUnit>().HasData(users, groups);
var user = new User {CommonName = "holger", IsActive = true, Id = -4, ParentId = users.Id};
modelBuilder.Entity<User>().HasData(user);
var secGroup = new SecurityGroup {CommonName = "Global Admin", Id = -3, ParentId = groups.Id};
modelBuilder.Entity<SecurityGroup>().HasData(secGroup);
modelBuilder.Entity<UserMember>()
.HasData(new UserMember {MemberId = secGroup.Id, UserId = user.Id});
}
public static void CreateRelations(this ModelBuilder modelBuilder)
{
modelBuilder.Entity<UserMember>()
.HasKey(bc => new {bc.MemberId, bc.UserId});
modelBuilder.Entity<UserMember>()
.HasOne(bc => bc.User)
.WithMany(b => b!.MemberOf)
.HasForeignKey(bc => bc.UserId);
modelBuilder.Entity<UserMember>()
.HasOne(bc => bc.Member)
.WithMany(c => c!.Members)
.HasForeignKey(bc => bc.MemberId);
modelBuilder.Entity<Node>()
.HasMany(c => c.Children)
.WithOne(e => e.Parent!)
.HasForeignKey(bc => bc.ParentId);
}
}
}