40 lines
1.6 KiB
C#
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);
|
|
}
|
|
}
|
|
} |