Skip to content

Commit cc53963

Browse files
committed
feat(generic-processor): add public method for setting relationships
1 parent d217336 commit cc53963

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

src/JsonApiDotNetCore/Internal/Generics/GenericProcessor.cs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
using System.Collections;
21
using System.Collections.Generic;
32
using System.Linq;
4-
using System.Reflection;
53
using System.Threading.Tasks;
64
using JsonApiDotNetCore.Extensions;
75
using JsonApiDotNetCore.Models;
@@ -18,10 +16,17 @@ public GenericProcessor(DbContext context)
1816
}
1917

2018
public async Task UpdateRelationshipsAsync(object parent, RelationshipAttribute relationship, IEnumerable<string> relationshipIds)
19+
{
20+
SetRelationships(parent, relationship, relationshipIds);
21+
22+
await _context.SaveChangesAsync();
23+
}
24+
25+
public void SetRelationships(object parent, RelationshipAttribute relationship, IEnumerable<string> relationshipIds)
2126
{
2227
var relationshipType = relationship.Type;
2328

24-
if(relationship.IsHasMany)
29+
if (relationship.IsHasMany)
2530
{
2631
var entities = _context.GetDbSet<T>().Where(x => relationshipIds.Contains(x.StringId)).ToList();
2732
relationship.SetValue(parent, entities);
@@ -30,9 +35,7 @@ public async Task UpdateRelationshipsAsync(object parent, RelationshipAttribute
3035
{
3136
var entity = _context.GetDbSet<T>().SingleOrDefault(x => relationshipIds.First() == x.StringId);
3237
relationship.SetValue(parent, entity);
33-
}
34-
35-
await _context.SaveChangesAsync();
38+
}
3639
}
3740
}
3841
}

src/JsonApiDotNetCore/Internal/Generics/IGenericProcessor.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ namespace JsonApiDotNetCore.Internal
77
public interface IGenericProcessor
88
{
99
Task UpdateRelationshipsAsync(object parent, RelationshipAttribute relationship, IEnumerable<string> relationshipIds);
10+
void SetRelationships(object parent, RelationshipAttribute relationship, IEnumerable<string> relationshipIds);
1011
}
1112
}

0 commit comments

Comments
 (0)