Skip to content

Commit

Permalink
fix navigation-properties of process-related entities
Browse files Browse the repository at this point in the history
  • Loading branch information
ntruchsess committed Jan 22, 2025
1 parent 92e04d2 commit b6c2a18
Show file tree
Hide file tree
Showing 154 changed files with 10,329 additions and 10,631 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,8 @@
<ProjectReference Include="..\..\externalsystems\OnboardingServiceProvider.Library\OnboardingServiceProvider.Library.csproj" />
<ProjectReference Include="..\..\framework\Framework.Async\Framework.Async.csproj" />
<ProjectReference Include="..\..\framework\Framework.DateTimeProvider\Framework.DateTimeProvider.csproj" />
<ProjectReference Include="..\..\framework\Framework.Identity\Framework.Identity.csproj" />
<ProjectReference Include="..\..\framework\Framework.IO\Framework.IO.csproj" />
<ProjectReference Include="..\..\framework\Framework.Models\Framework.Models.csproj" />
<ProjectReference Include="..\..\framework\Framework.Processes.Library.Concrete\Framework.Processes.Library.Concrete.csproj" />
<ProjectReference Include="..\..\framework\Framework.Token\Framework.Token.csproj" />
<ProjectReference Include="..\..\keycloak\Keycloak.Authentication\Keycloak.Authentication.csproj" />
<ProjectReference Include="..\..\processes\ApplicationChecklist.Config\ApplicationChecklist.Config.csproj" />
Expand Down
1 change: 0 additions & 1 deletion src/externalsystems/Bpdm.Library/Bpdm.Library.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\..\framework\Framework.Processes.Library.Concrete\Framework.Processes.Library.Concrete.csproj" />
<ProjectReference Include="..\..\framework\Framework.Token\Framework.Token.csproj" />
<ProjectReference Include="..\..\portalbackend\PortalBackend.DBAccess\PortalBackend.DBAccess.csproj" />
<ProjectReference Include="..\..\processes\ApplicationChecklist.Library\ApplicationChecklist.Library.csproj" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@

<ItemGroup>
<ProjectReference Include="..\..\framework\Framework.IO\Framework.IO.csproj" />
<ProjectReference Include="..\..\framework\Framework.Processes.Library.Concrete\Framework.Processes.Library.Concrete.csproj" />
<ProjectReference Include="..\..\framework\Framework.Token\Framework.Token.csproj" />
<ProjectReference Include="..\..\portalbackend\PortalBackend.DBAccess\PortalBackend.DBAccess.csproj" />
<ProjectReference Include="..\..\processes\ApplicationChecklist.Library\ApplicationChecklist.Library.csproj" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\..\framework\Framework.Processes.Library.Concrete\Framework.Processes.Library.Concrete.csproj" />
<ProjectReference Include="..\..\portalbackend\PortalBackend.DBAccess\PortalBackend.DBAccess.csproj" />
<ProjectReference Include="..\Custodian.Library\Custodian.Library.csproj" />
<ProjectReference Include="..\..\processes\ApplicationChecklist.Library\ApplicationChecklist.Library.csproj" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@

<ItemGroup>
<ProjectReference Include="..\..\framework\Framework.IO\Framework.IO.csproj" />
<ProjectReference Include="..\..\framework\Framework.Processes.Library.Concrete\Framework.Processes.Library.Concrete.csproj" />
<ProjectReference Include="..\..\framework\Framework.Token\Framework.Token.csproj" />
<ProjectReference Include="..\..\portalbackend\PortalBackend.DBAccess\PortalBackend.DBAccess.csproj" />
<ProjectReference Include="..\..\processes\ApplicationChecklist.Library\ApplicationChecklist.Library.csproj" />
Expand Down
1 change: 0 additions & 1 deletion src/externalsystems/Dim.Library/Dim.Library.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@

<ItemGroup>
<ProjectReference Include="..\..\framework\Framework.IO\Framework.IO.csproj" />
<ProjectReference Include="..\..\framework\Framework.Processes.Library.Concrete\Framework.Processes.Library.Concrete.csproj" />
<ProjectReference Include="..\..\framework\Framework.Token\Framework.Token.csproj" />
<ProjectReference Include="..\..\portalbackend\PortalBackend.DBAccess\PortalBackend.DBAccess.csproj" />
<ProjectReference Include="..\..\processes\ApplicationChecklist.Library\ApplicationChecklist.Library.csproj" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@

<ItemGroup>
<ProjectReference Include="..\..\framework\Framework.IO\Framework.IO.csproj" />
<ProjectReference Include="..\..\framework\Framework.Processes.Library.Concrete\Framework.Processes.Library.Concrete.csproj" />
<ProjectReference Include="..\..\framework\Framework.Token\Framework.Token.csproj" />
<ProjectReference Include="..\..\portalbackend\PortalBackend.DBAccess\PortalBackend.DBAccess.csproj" />
<ProjectReference Include="..\..\processes\ApplicationChecklist.Library\ApplicationChecklist.Library.csproj" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\..\framework\Framework.Processes.Library.Concrete\Framework.Processes.Library.Concrete.csproj" />
<ProjectReference Include="..\..\framework\Framework.Token\Framework.Token.csproj" />
<ProjectReference Include="..\..\portalbackend\PortalBackend.DBAccess\PortalBackend.DBAccess.csproj" />
<ProjectReference Include="..\..\provisioning\Provisioning.Library\Provisioning.Library.csproj" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\..\framework\Framework.Processes.Library.Concrete\Framework.Processes.Library.Concrete.csproj" />
<ProjectReference Include="..\..\framework\Framework.Token\Framework.Token.csproj" />
<ProjectReference Include="..\..\portalbackend\PortalBackend.DBAccess\PortalBackend.DBAccess.csproj" />
</ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\..\framework\Framework.Processes.Library.Concrete\Framework.Processes.Library.Concrete.csproj" />
<ProjectReference Include="..\..\framework\Framework.Token\Framework.Token.csproj" />
<ProjectReference Include="..\..\portalbackend\PortalBackend.DBAccess\PortalBackend.DBAccess.csproj" />
<ProjectReference Include="..\..\processes\ApplicationChecklist.Library\ApplicationChecklist.Library.csproj" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,23 @@

namespace Org.Eclipse.TractusX.Portal.Backend.Framework.DBAccess;

public abstract class Repositories(IDbContext dbContext) : IRepositories
public abstract class AbstractRepositories<TDbContext>(TDbContext dbContext) : IRepositories
where TDbContext : class, IDbContext
{
public abstract T GetInstance<T>();
protected static KeyValuePair<Type, Func<TDbContext, object>> CreateTypeEntry<T>(Func<TDbContext, object> createFunc) => KeyValuePair.Create(typeof(T), createFunc);
protected abstract IReadOnlyDictionary<Type, Func<TDbContext, object>> RepositoryTypes { get; }

public RepositoryType GetInstance<RepositoryType>()
{
object? repository = default;

if (RepositoryTypes.TryGetValue(typeof(RepositoryType), out var createFunc))
{
repository = createFunc(dbContext);
}

return (RepositoryType)(repository ?? throw new ArgumentException($"unexpected type {typeof(RepositoryType).Name}", nameof(RepositoryType)));
}

/// <inheritdoc />
public TEntity Attach<TEntity>(TEntity entity, Action<TEntity>? setOptionalParameters = null) where TEntity : class
Expand Down
2 changes: 1 addition & 1 deletion src/framework/Framework.Identity/IdentityTypeId.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,5 @@ namespace Org.Eclipse.TractusX.Portal.Backend.Framework.Identity;
public enum IdentityTypeId
{
COMPANY_USER = 1,
COMPANY_SERVICE_ACCOUNT = 2
TECHNICAL_USER = 2
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,30 +21,24 @@
using Org.Eclipse.TractusX.Portal.Backend.Framework.DBAccess;
using Org.Eclipse.TractusX.Portal.Backend.Framework.Processes.Library.Concrete.Entities;
using Org.Eclipse.TractusX.Portal.Backend.Framework.Processes.Library.Context;
using Org.Eclipse.TractusX.Portal.Backend.Framework.Processes.Library.Entities;
using Org.Eclipse.TractusX.Portal.Backend.Framework.Processes.Library.Enums;

namespace Org.Eclipse.TractusX.Portal.Backend.Framework.Processes.Library.Concrete.Context;

public class ProcessDbContext<TProcessTypeId, TProcessStepTypeId> :
DbContext,
IProcessDbContext<Process<TProcessTypeId, TProcessStepTypeId>, ProcessStep<TProcessTypeId, TProcessStepTypeId>, ProcessStepStatus<TProcessTypeId, TProcessStepTypeId>, TProcessTypeId, TProcessStepTypeId>,
public class ProcessDbContext<TProcess, TProcessTypeId, TProcessStepTypeId>(DbContextOptions options) :
DbContext(options),
IProcessDbContext<TProcess, ProcessType<TProcess, TProcessTypeId>, ProcessStep<TProcess, TProcessTypeId, TProcessStepTypeId>, TProcessTypeId, TProcessStepTypeId>,
IDbContext
where TProcess : class, IProcess<TProcessTypeId>, IProcessNavigation<ProcessType<TProcess, TProcessTypeId>, ProcessStep<TProcess, TProcessTypeId, TProcessStepTypeId>, TProcessTypeId, TProcessStepTypeId>
where TProcessTypeId : struct, IConvertible
where TProcessStepTypeId : struct, IConvertible
{
protected ProcessDbContext()
{
throw new InvalidOperationException("IdentityService should never be null");
}

public ProcessDbContext(DbContextOptions options)
: base(options)
{
}

public virtual DbSet<Process<TProcessTypeId, TProcessStepTypeId>> Processes { get; set; } = default!;
public virtual DbSet<ProcessStep<TProcessTypeId, TProcessStepTypeId>> ProcessSteps { get; set; } = default!;
public virtual DbSet<ProcessStepStatus<TProcessTypeId, TProcessStepTypeId>> ProcessStepStatuses { get; set; } = default!;
public virtual DbSet<TProcess> Processes { get; set; } = default!;
public virtual DbSet<ProcessStep<TProcess, TProcessTypeId, TProcessStepTypeId>> ProcessSteps { get; set; } = default!;
public virtual DbSet<ProcessStepStatus<TProcess, TProcessTypeId, TProcessStepTypeId>> ProcessStepStatuses { get; set; } = default!;
public virtual DbSet<ProcessStepType<TProcess, TProcessTypeId, TProcessStepTypeId>> ProcessStepTypes { get; set; } = default!;
public virtual DbSet<ProcessType<TProcess, TProcessTypeId>> ProcessTypes { get; set; } = default!;

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
Expand All @@ -53,28 +47,50 @@ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Process<TProcessTypeId, TProcessStepTypeId>>(p =>
modelBuilder.Entity<TProcess>(p =>
{
p.HasOne(d => d.ProcessType)
.WithMany(p => p!.Processes)
.HasForeignKey(d => d.ProcessTypeId)
.OnDelete(DeleteBehavior.ClientSetNull);
p.ToTable("processes");
});

modelBuilder.Entity<ProcessStep<TProcessTypeId, TProcessStepTypeId>>(ps =>
modelBuilder.Entity<ProcessStep<TProcess, TProcessTypeId, TProcessStepTypeId>>(ps =>
{
ps
.HasOne(d => d.Process)
ps.HasOne(d => d.Process)
.WithMany(p => p.ProcessSteps)
.HasForeignKey(d => d.ProcessId)
.OnDelete(DeleteBehavior.ClientSetNull);

ps.HasOne(d => d.ProcessStepStatus)
.WithMany(p => p.ProcessSteps)
.HasForeignKey(d => d.ProcessStepStatusId)
.OnDelete(DeleteBehavior.ClientSetNull);

ps.ToTable("process_steps");
});

modelBuilder.Entity<ProcessStepStatus<TProcessTypeId, TProcessStepTypeId>>(pss =>
modelBuilder.Entity<ProcessType<TProcess, TProcessTypeId>>()
.HasData(
Enum.GetValues(typeof(TProcessTypeId))
.Cast<TProcessTypeId>()
.Select(e => new ProcessType<TProcess, TProcessTypeId>(e))
);

modelBuilder.Entity<ProcessStepType<TProcess, TProcessTypeId, TProcessStepTypeId>>()
.HasData(
Enum.GetValues(typeof(TProcessStepTypeId))
.Cast<TProcessStepTypeId>()
.Select(e => new ProcessStepType<TProcess, TProcessTypeId, TProcessStepTypeId>(e))
);

modelBuilder.Entity<ProcessStepStatus<TProcess, TProcessTypeId, TProcessStepTypeId>>(pss =>
{
pss.HasData(
Enum.GetValues(typeof(ProcessStepStatusId))
.Cast<ProcessStepStatusId>()
.Select(e => new ProcessStepStatus<TProcessTypeId, TProcessStepTypeId>(e))
.Select(e => new ProcessStepStatus<TProcess, TProcessTypeId, TProcessStepTypeId>(e))
);

pss.ToTable("process_step_statuses");
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -25,30 +25,17 @@

namespace Org.Eclipse.TractusX.Portal.Backend.Framework.Processes.Library.Concrete.DBAccess;

public class ProcessRepositories<TProcessTypeId, TProcessStepTypeId, TProcessDbContext>(TProcessDbContext dbContext) :
Repositories(dbContext)
public class SimpleProcessRepositories<TProcessTypeId, TProcessStepTypeId, TProcessDbContext>(TProcessDbContext dbContext) :
AbstractRepositories<TProcessDbContext>(dbContext)
where TProcessTypeId : struct, IConvertible
where TProcessStepTypeId : struct, IConvertible
where TProcessDbContext : class, IProcessDbContext<Process<TProcessTypeId, TProcessStepTypeId>, ProcessStep<TProcessTypeId, TProcessStepTypeId>, ProcessStepStatus<TProcessTypeId, TProcessStepTypeId>, TProcessTypeId, TProcessStepTypeId>, IDbContext
where TProcessDbContext : class, IProcessDbContext<SimpleProcess<TProcessTypeId, TProcessStepTypeId>, ProcessType<SimpleProcess<TProcessTypeId, TProcessStepTypeId>, TProcessTypeId>, ProcessStep<SimpleProcess<TProcessTypeId, TProcessStepTypeId>, TProcessTypeId, TProcessStepTypeId>, TProcessTypeId, TProcessStepTypeId>, IDbContext
{
private static KeyValuePair<Type, Func<TProcessDbContext, object>> CreateTypeEntry<T>(Func<TProcessDbContext, object> createFunc) => KeyValuePair.Create(typeof(T), createFunc);

protected static readonly IReadOnlyDictionary<Type, Func<TProcessDbContext, object>> ProcessRepositoryTypes = ImmutableDictionary.CreateRange(
protected override IReadOnlyDictionary<Type, Func<TProcessDbContext, object>> RepositoryTypes => ProcessRepositoryTypes;
private static readonly IReadOnlyDictionary<Type, Func<TProcessDbContext, object>> ProcessRepositoryTypes = ImmutableDictionary.CreateRange(
[
CreateTypeEntry<IProcessStepRepository<TProcessTypeId, TProcessStepTypeId>>(context =>
new ProcessStepRepository<Process<TProcessTypeId, TProcessStepTypeId>, ProcessStep<TProcessTypeId, TProcessStepTypeId>, ProcessStepStatus<TProcessTypeId, TProcessStepTypeId>, TProcessTypeId, TProcessStepTypeId>(
new ProcessRepositoryContextAccess<TProcessTypeId, TProcessStepTypeId, TProcessDbContext>(context)))
new ProcessStepRepository<SimpleProcess<TProcessTypeId, TProcessStepTypeId>, ProcessType<SimpleProcess<TProcessTypeId, TProcessStepTypeId>, TProcessTypeId>, ProcessStep<SimpleProcess<TProcessTypeId, TProcessStepTypeId>, TProcessTypeId, TProcessStepTypeId>, ProcessStepType<SimpleProcess<TProcessTypeId, TProcessStepTypeId>, TProcessTypeId, TProcessStepTypeId>, TProcessTypeId, TProcessStepTypeId>(
new SimpleProcessRepositoryContextAccess<TProcessTypeId, TProcessStepTypeId, TProcessDbContext>(context)))
]);

public override RepositoryType GetInstance<RepositoryType>()
{
object? repository = default;

if (ProcessRepositoryTypes.TryGetValue(typeof(RepositoryType), out var createFunc))
{
repository = createFunc(dbContext);
}

return (RepositoryType)(repository ?? throw new ArgumentException($"unexpected type {typeof(RepositoryType).Name}", nameof(RepositoryType)));
}
}
Loading

0 comments on commit b6c2a18

Please sign in to comment.