Skip to content

Commit 876b839

Browse files
committed
fix: load db values for guid models
1 parent 36754a7 commit 876b839

File tree

8 files changed

+38
-7
lines changed

8 files changed

+38
-7
lines changed

src/JsonApiDotNetCore/Data/DefaultEntityRepository.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,28 @@ IDbContextResolver contextResolver
3636
{ }
3737
}
3838

39+
public class DefaultGuidEntityRepository<TEntity>
40+
: DefaultEntityRepository<TEntity, Guid>,
41+
IGuidEntityRepository<TEntity>
42+
where TEntity : class, IIdentifiable<Guid>
43+
{
44+
public DefaultGuidEntityRepository(
45+
IJsonApiContext jsonApiContext,
46+
IDbContextResolver contextResolver
47+
)
48+
: base(jsonApiContext, contextResolver)
49+
{ }
50+
51+
public DefaultGuidEntityRepository(
52+
ILoggerFactory loggerFactory,
53+
IJsonApiContext jsonApiContext,
54+
IDbContextResolver contextResolver
55+
)
56+
: base(loggerFactory, jsonApiContext, contextResolver)
57+
{ }
58+
}
59+
60+
3961
/// <summary>
4062
/// Provides a default repository implementation and is responsible for
4163
/// abstracting any EF Core APIs away from the service layer.

src/JsonApiDotNetCore/Data/IEntityReadRepository.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ public interface IEntityReadRepository<TEntity>
1212
where TEntity : class, IIdentifiable<int>
1313
{ }
1414

15+
public interface IGuidEntityReadRepository<TEntity>
16+
: IEntityReadRepository<TEntity, Guid>
17+
where TEntity : class, IIdentifiable<Guid>
18+
{ }
19+
1520
public interface IEntityReadRepository<TEntity, in TId>
1621
where TEntity : class, IIdentifiable<TId>
1722
{
@@ -27,7 +32,7 @@ public interface IEntityReadRepository<TEntity, in TId>
2732
/// <summary>
2833
/// Apply fields to the provided queryable
2934
/// </summary>
30-
IQueryable<TEntity> Select(IQueryable<TEntity> entities,List<string> fields);
35+
IQueryable<TEntity> Select(IQueryable<TEntity> entities, List<string> fields);
3136

3237
/// <summary>
3338
/// Include a relationship in the query

src/JsonApiDotNetCore/Data/IEntityRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public interface IGuidEntityRepository<TEntity>
77
: IEntityRepository<TEntity, Guid>
88
where TEntity : class, IIdentifiable<Guid>
99
{ }
10-
10+
1111
public interface IEntityRepository<TEntity>
1212
: IEntityRepository<TEntity, int>
1313
where TEntity : class, IIdentifiable<int>

src/JsonApiDotNetCore/Data/IEntityWriteRepository.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ public interface IEntityWriteRepository<TEntity>
1010
where TEntity : class, IIdentifiable<int>
1111
{ }
1212

13+
public interface IGuidEntityWriteRepository<TEntity>
14+
: IEntityReadRepository<TEntity, Guid>
15+
where TEntity : class, IIdentifiable<Guid>
16+
{ }
17+
1318
public interface IEntityWriteRepository<TEntity, in TId>
1419
where TEntity : class, IIdentifiable<TId>
1520
{

src/JsonApiDotNetCore/Extensions/IServiceCollectionExtensions.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ public static void AddJsonApiInternals(
113113
AddOperationServices(services);
114114

115115
services.AddScoped(typeof(IEntityRepository<>), typeof(DefaultEntityRepository<>));
116+
services.AddScoped(typeof(IGuidEntityRepository<>), typeof(DefaultGuidEntityRepository<>));
116117
services.AddScoped(typeof(IEntityRepository<,>), typeof(DefaultEntityRepository<,>));
117118

118119
services.AddScoped(typeof(ICreateService<>), typeof(EntityResourceService<>));

src/JsonApiDotNetCore/Graph/ServiceDiscoveryFacade.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,13 @@ public class ServiceDiscoveryFacade
4040

4141
internal static HashSet<Type> RepositoryInterfaces = new HashSet<Type> {
4242
typeof(IEntityRepository<>),
43+
typeof(IGuidEntityRepository<>),
4344
typeof(IEntityRepository<,>),
4445
typeof(IEntityWriteRepository<>),
46+
typeof(IGuidEntityWriteRepository<>),
4547
typeof(IEntityWriteRepository<,>),
4648
typeof(IEntityReadRepository<>),
49+
typeof(IGuidEntityReadRepository<>),
4750
typeof(IEntityReadRepository<,>)
4851
};
4952

src/JsonApiDotNetCore/Hooks/ResourceHookExecutor.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ void RecursiveBeforeRead(ContextEntity contextEntity, List<string> relationshipC
7171

7272
RecursiveBeforeRead(_graph.GetContextEntity(relationship.DependentType), relationshipChain, pipeline, calledContainers);
7373
}
74-
7574
}
7675

7776
public virtual IEnumerable<TEntity> BeforeUpdate<TEntity>(IEnumerable<TEntity> entities, ResourceAction pipeline) where TEntity : class, IIdentifiable
@@ -195,7 +194,6 @@ public virtual IEnumerable<TEntity> BeforeDelete<TEntity>(IEnumerable<TEntity> e
195194
}
196195
}
197196
return entities;
198-
199197
}
200198

201199
public virtual IEnumerable<TEntity> OnReturn<TEntity>(IEnumerable<TEntity> entities, ResourceAction pipeline) where TEntity : class, IIdentifiable
@@ -382,7 +380,6 @@ Dictionary<RelationshipProxy, List<IIdentifiable>> LoadImplicitlyAffected(
382380
return implicitlyAffected.ToDictionary(kvp => kvp.Key, kvp => new HashSet<IIdentifiable>(kvp.Value).ToList());
383381
}
384382

385-
386383
IList LoadDbValues(IList entities, List<RelationshipProxy> relationships, Type entityType, ResourceHook hook)
387384
{
388385
if (_meta.ShouldLoadDbValues(entityType, hook))
@@ -393,7 +390,6 @@ IList LoadDbValues(IList entities, List<RelationshipProxy> relationships, Type e
393390
return null;
394391
}
395392

396-
397393
/// <summary>
398394
/// checks that the collection does not contain more than one item when
399395
/// relevant (eg AfterRead from GetSingle pipeline).

src/JsonApiDotNetCore/Hooks/TreeTraversal/HookExecutorHelper.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,6 @@ IEntityReadRepository<TEntity, TId> GetRepository<TEntity, TId>() where TEntity
178178
{
179179
var openType = typeof(TId) == typeof(Guid) ? typeof(IGuidEntityRepository<>) : typeof(IEntityRepository<>);
180180
return _genericProcessorFactory.GetProcessor<IEntityReadRepository<TEntity, TId>>(openType, typeof(TEntity));
181-
182181
}
183182

184183
}

0 commit comments

Comments
 (0)