Skip to content

Commit ff50de8

Browse files
authored
Merge branch 'master' into fix/make-isimmutable-work
2 parents d004167 + c4ebf4b commit ff50de8

File tree

8 files changed

+23
-26
lines changed

8 files changed

+23
-26
lines changed

src/Examples/JsonApiDotNetCoreExample/Models/TodoItem.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ public TodoItem()
2626
[Attr("achieved-date", isFilterable: false, isSortable: false)]
2727
public DateTime? AchievedDate { get; set; }
2828

29-
3029
[Attr("updated-date")]
3130
public DateTime? UpdatedDate { get; set; }
3231

@@ -36,6 +35,9 @@ public string CalculatedValue
3635
get => "joe";
3736
}
3837

38+
[Attr("offset-date")]
39+
public DateTimeOffset? OffsetDate { get; set; }
40+
3941
public int? OwnerId { get; set; }
4042
public int? AssigneeId { get; set; }
4143
public Guid? CollectionId { get; set; }

src/JsonApiDotNetCore/Data/DefaultEntityRepository.cs

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -78,18 +78,8 @@ public DefaultEntityRepository(
7878
_resourceDefinition = resourceDefinition;
7979
}
8080

81-
82-
83-
public virtual IQueryable<TEntity> Get()
84-
{
85-
if (_jsonApiContext.QuerySet?.Fields != null && _jsonApiContext.QuerySet.Fields.Count > 0)
86-
return _dbSet.Select(_jsonApiContext.QuerySet?.Fields);
87-
88-
return _dbSet;
89-
}
90-
9181
/// <inheritdoc />
92-
public virtual IQueryable<TEntity> GetQueryable()
82+
public virtual IQueryable<TEntity> Get()
9383
=> _dbSet;
9484

9585
public virtual IQueryable<TEntity> Select(IQueryable<TEntity> entities, List<string> fields)
@@ -140,15 +130,15 @@ public virtual IQueryable<TEntity> Sort(IQueryable<TEntity> entities, List<SortQ
140130
/// <inheritdoc />
141131
public virtual async Task<TEntity> GetAsync(TId id)
142132
{
143-
return await Select(GetQueryable(), _jsonApiContext.QuerySet?.Fields).SingleOrDefaultAsync(e => e.Id.Equals(id));
133+
return await Select(Get(), _jsonApiContext.QuerySet?.Fields).SingleOrDefaultAsync(e => e.Id.Equals(id));
144134
}
145135

146136
/// <inheritdoc />
147137
public virtual async Task<TEntity> GetAndIncludeAsync(TId id, string relationshipName)
148138
{
149139
_logger?.LogDebug($"[JADN] GetAndIncludeAsync({id}, {relationshipName})");
150140

151-
var includedSet = Include(Select(GetQueryable(), _jsonApiContext.QuerySet?.Fields), relationshipName);
141+
var includedSet = Include(Select(Get(), _jsonApiContext.QuerySet?.Fields), relationshipName);
152142
var result = await includedSet.SingleOrDefaultAsync(e => e.Id.Equals(id));
153143

154144
return result;

src/JsonApiDotNetCore/Data/IEntityReadRepository.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@ public interface IEntityReadRepository<TEntity, in TId>
1919
/// The base GET query. This is a good place to apply rules that should affect all reads,
2020
/// such as authorization of resources.
2121
/// </summary>
22-
IQueryable<TEntity> GetQueryable();
23-
24-
[Obsolete("This method has been deprecated, use GetQueryable() instead")]
2522
IQueryable<TEntity> Get();
2623

2724
/// <summary>

src/JsonApiDotNetCore/JsonApiDotNetCore.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3-
<VersionPrefix>3.1.0</VersionPrefix>
3+
<VersionPrefix>4.0.0</VersionPrefix>
44
<TargetFrameworks>$(NetStandardVersion)</TargetFrameworks>
55
<AssemblyName>JsonApiDotNetCore</AssemblyName>
66
<PackageId>JsonApiDotNetCore</PackageId>

src/JsonApiDotNetCore/Serialization/JsonApiDeSerializer.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.IO;
34
using System.Linq;
45
using System.Reflection;
56
using JsonApiDotNetCore.Extensions;
@@ -36,8 +37,12 @@ public object Deserialize(string requestBody)
3637
{
3738
try
3839
{
39-
var bodyJToken = JToken.Parse(requestBody);
40-
40+
JToken bodyJToken;
41+
using (JsonReader jsonReader = new JsonTextReader(new StringReader(requestBody)))
42+
{
43+
jsonReader.DateParseHandling = DateParseHandling.None;
44+
bodyJToken = JToken.Load(jsonReader);
45+
}
4146
if (RequestIsOperation(bodyJToken))
4247
{
4348
_jsonApiContext.IsBulkOperationRequest = true;

src/JsonApiDotNetCore/Services/EntityResourceService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ public virtual async Task<bool> DeleteAsync(TId id)
9898

9999
public virtual async Task<IEnumerable<TResource>> GetAsync()
100100
{
101-
var entities = _entities.GetQueryable();
101+
var entities = _entities.Get();
102102

103103
entities = ApplySortAndFilterQuery(entities);
104104

@@ -242,7 +242,7 @@ protected virtual IQueryable<TEntity> IncludeRelationships(IQueryable<TEntity> e
242242

243243
private async Task<TResource> GetWithRelationshipsAsync(TId id)
244244
{
245-
var query = _entities.Select(_entities.GetQueryable(), _jsonApiContext.QuerySet?.Fields).Where(e => e.Id.Equals(id));
245+
var query = _entities.Select(_entities.Get(), _jsonApiContext.QuerySet?.Fields).Where(e => e.Id.Equals(id));
246246

247247
_jsonApiContext.QuerySet.IncludedRelationships.ForEach(r =>
248248
{

test/JsonApiDotNetCoreExampleTests/Acceptance/TodoItemsControllerTests.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,7 @@ public async Task Can_Post_TodoItem()
452452
_context.SaveChanges();
453453

454454
var todoItem = _todoItemFaker.Generate();
455+
var nowOffset = new DateTimeOffset();
455456
var content = new
456457
{
457458
data = new
@@ -461,7 +462,8 @@ public async Task Can_Post_TodoItem()
461462
{
462463
{ "description", todoItem.Description },
463464
{ "ordinal", todoItem.Ordinal },
464-
{ "created-date", todoItem.CreatedDate }
465+
{ "created-date", todoItem.CreatedDate },
466+
{ "offset-date", nowOffset }
465467
},
466468
relationships = new
467469
{
@@ -494,6 +496,7 @@ public async Task Can_Post_TodoItem()
494496
Assert.Equal(HttpStatusCode.Created, response.StatusCode);
495497
Assert.Equal(todoItem.Description, deserializedBody.Description);
496498
Assert.Equal(todoItem.CreatedDate.ToString("G"), deserializedBody.CreatedDate.ToString("G"));
499+
Assert.Equal(nowOffset.ToString("yyyy-MM-ddTHH:mm:ssK"), deserializedBody.OffsetDate?.ToString("yyyy-MM-ddTHH:mm:ssK"));
497500
Assert.Null(deserializedBody.AchievedDate);
498501
}
499502

test/JsonApiDotNetCoreExampleTests/Helpers/Repositories/AuthorizedTodoItemsRepository.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ public AuthorizedTodoItemsRepository(
2323
_authService = authService;
2424
}
2525

26-
public override IQueryable<TodoItem> GetQueryable()
26+
public override IQueryable<TodoItem> Get()
2727
{
28-
return base.GetQueryable().Where(todoItem => todoItem.OwnerId == _authService.CurrentUserId);
28+
return base.Get().Where(todoItem => todoItem.OwnerId == _authService.CurrentUserId);
2929
}
3030
}
3131
}

0 commit comments

Comments
 (0)