Skip to content

Commit a3d0135

Browse files
authored
Merge pull request #35 from ethereum-boilerplate/bugs/issue_34
Issue#34 Query result items missing Object Service
2 parents ec2236d + ec0dfda commit a3d0135

File tree

11 files changed

+96
-15
lines changed

11 files changed

+96
-15
lines changed

Assets/MoralisWeb3ApiSdk/Moralis/Moralis.WebGL/MoralisDotNet/Platform/Abstractions/IQueryService.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ namespace Moralis.WebGL.Platform.Abstractions
88
{
99
public interface IQueryService
1010
{
11+
IObjectService ObjectService { get; }
1112
//Task<IEnumerable<T>> FindAsync<T>(MoralisQuery<T> query, MoralisUser user, CancellationToken cancellationToken = default) where T : MoralisObject;
1213

1314
//Task<IEnumerable<T>> AggregateAsync<T>(MoralisQuery<T> query, MoralisUser user, CancellationToken cancellationToken = default) where T : MoralisObject;

Assets/MoralisWeb3ApiSdk/Moralis/Moralis.WebGL/MoralisDotNet/Platform/Queries/MoralisQuery.cs

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -595,6 +595,13 @@ public async UniTask<IEnumerable<T>> AggregateAsync(CancellationToken cancellati
595595
{
596596
EnsureNotInstallationQuery();
597597
IEnumerable<T> aggResp = await QueryService.AggregateAsync<T>(this, SessionToken, cancellationToken);
598+
599+
foreach (T i in aggResp)
600+
{
601+
i.ObjectService = this.QueryService.ObjectService;
602+
i.SessionToken = this.SessionToken;
603+
}
604+
598605
return aggResp;
599606
}
600607

@@ -612,7 +619,15 @@ public async UniTask<IEnumerable<T>> AggregateAsync(CancellationToken cancellati
612619
public async UniTask<IEnumerable<T>> FindAsync(CancellationToken cancellationToken)
613620
{
614621
EnsureNotInstallationQuery();
615-
return await QueryService.FindAsync(this, SessionToken, cancellationToken);
622+
IEnumerable<T> items = await QueryService.FindAsync(this, SessionToken, cancellationToken);
623+
624+
foreach (T i in items)
625+
{
626+
i.ObjectService = this.QueryService.ObjectService;
627+
i.SessionToken = this.SessionToken;
628+
}
629+
630+
return items;
616631
}
617632

618633
/// <summary>
@@ -629,7 +644,15 @@ public async UniTask<IEnumerable<T>> FindAsync(CancellationToken cancellationTok
629644
public async UniTask<IEnumerable<T>> DistinctAsync(CancellationToken cancellationToken)
630645
{
631646
EnsureNotInstallationQuery();
632-
return await QueryService.DistinctAsync(this, SessionToken, cancellationToken);
647+
IEnumerable<T> items = await QueryService.DistinctAsync(this, SessionToken, cancellationToken);
648+
649+
foreach (T i in items)
650+
{
651+
i.ObjectService = this.QueryService.ObjectService;
652+
i.SessionToken = this.SessionToken;
653+
}
654+
655+
return items;
633656
}
634657

635658
/// <summary>
@@ -646,7 +669,12 @@ public async UniTask<IEnumerable<T>> DistinctAsync(CancellationToken cancellatio
646669
public async UniTask<T> FirstOrDefaultAsync(CancellationToken cancellationToken)
647670
{
648671
EnsureNotInstallationQuery();
649-
return await QueryService.FirstAsync<T>(this, SessionToken, cancellationToken);
672+
T item = await QueryService.FirstAsync<T>(this, SessionToken, cancellationToken);
673+
674+
item.ObjectService = this.QueryService.ObjectService;
675+
item.SessionToken = this.SessionToken;
676+
677+
return item;
650678
}
651679

652680
/// <summary>
@@ -702,7 +730,16 @@ public async UniTask<T> GetAsync(string objectId, CancellationToken cancellation
702730
singleItemQuery = new MoralisQuery<T>(singleItemQuery, includes: Includes, selectedKeys: KeySelections, limit: 1);
703731
IEnumerable<T> findResp = await singleItemQuery.FindAsync(cancellationToken);
704732
T result = findResp.FirstOrDefault();
705-
return result != null ? result : throw new MoralisFailureException(MoralisFailureException.ErrorCode.ObjectNotFound, "Object with the given objectId not found.");
733+
734+
if (result == null)
735+
{
736+
throw new MoralisFailureException(MoralisFailureException.ErrorCode.ObjectNotFound, "Object with the given objectId not found.");
737+
}
738+
739+
result.ObjectService = this.QueryService.ObjectService;
740+
result.SessionToken = this.SessionToken;
741+
742+
return result;
706743
}
707744

708745
internal object GetConstraint(string key) => Filters?.GetOrDefault(key, null);

Assets/MoralisWeb3ApiSdk/Moralis/Moralis.WebGL/MoralisDotNet/Platform/Services/Infrastructure/MoralisQueryService.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ internal class MoralisQueryService : IQueryService
2222
string SessionToken { get; }
2323
//IMoralisDataDecoder Decoder { get; }
2424

25-
public MoralisQueryService(IMoralisCommandRunner commandRunner, string sessionToken, IJsonSerializer jsonSerializer) => (CommandRunner, SessionToken, JsonSerializer) = (commandRunner, sessionToken, jsonSerializer);
25+
public IObjectService ObjectService { get; }
26+
27+
public MoralisQueryService(IMoralisCommandRunner commandRunner, string sessionToken, IJsonSerializer jsonSerializer, IObjectService objectService) => (CommandRunner, SessionToken, JsonSerializer, ObjectService) = (commandRunner, sessionToken, jsonSerializer, objectService);
2628

2729
public async UniTask<IEnumerable<T>> FindAsync<T>(MoralisQuery<T> query, string sessionToken, CancellationToken cancellationToken = default) where T : MoralisObject
2830
{

Assets/MoralisWeb3ApiSdk/Moralis/Moralis.WebGL/MoralisDotNet/Platform/Services/MutableServiceHub.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public MutableServiceHub<TUser> SetDefaults(IServerConnectionData connectionData
8181
//ConfigurationController ??= new ParseConfigurationController(CommandRunner, CacheController, Decoder);
8282
FileService ??= new MoralisFileService(CommandRunner, JsonSerializer);
8383
ObjectService ??= new MoralisObjectService(CommandRunner, ServerConnectionData, JsonSerializer);
84-
QueryService ??= new MoralisQueryService(CommandRunner, this.CurrentUserService.CurrentUser.SessionToken, JsonSerializer);
84+
QueryService ??= new MoralisQueryService(CommandRunner, this.CurrentUserService.CurrentUser.SessionToken, JsonSerializer, ObjectService);
8585
SessionService ??= new MoralisSessionService<TUser>(CommandRunner, JsonSerializer);
8686
UserService ??= new MoralisUserService<TUser>(CommandRunner, JsonSerializer);
8787
CurrentUserService ??= new MoralisCurrentUserService<TUser>(CacheService, JsonSerializer);

Assets/MoralisWeb3ApiSdk/Moralis/Moralis.WebGL/MoralisDotNet/Platform/Services/ServiceHub.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public ServiceHub(IServerConnectionData connectionData, IJsonSerializer jsonSeri
5656
public IUserService<TUser> UserService => LateInitializer.GetValue(() => new MoralisUserService<TUser>(CommandRunner, JsonSerializer));
5757
public ICurrentUserService<TUser> CurrentUserService => LateInitializer.GetValue(() => new MoralisCurrentUserService<TUser>(CacheService, JsonSerializer));
5858
public IObjectService ObjectService => LateInitializer.GetValue(() => new MoralisObjectService(CommandRunner, ServerConnectionData, JsonSerializer));
59-
public IQueryService QueryService => LateInitializer.GetValue(() => new MoralisQueryService(CommandRunner, this.CurrentUserService.CurrentUser?.SessionToken, JsonSerializer));
59+
public IQueryService QueryService => LateInitializer.GetValue(() => new MoralisQueryService(CommandRunner, this.CurrentUserService.CurrentUser?.SessionToken, JsonSerializer, ObjectService));
6060
public ISessionService<TUser> SessionService => LateInitializer.GetValue(() => new MoralisSessionService<TUser>(CommandRunner, JsonSerializer));
6161
public ICloudFunctionService CloudFunctionService => LateInitializer.GetValue(() => new MoralisCloudFunctionService(CommandRunner, ServerConnectionData, JsonSerializer));
6262
public IFileService FileService => LateInitializer.GetValue(() => new MoralisFileService(CommandRunner, JsonSerializer));

Assets/MoralisWeb3ApiSdk/Moralis/MoralisDotNet/Platform/Abstractions/IQueryService.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ namespace Moralis.Platform.Abstractions
99
{
1010
public interface IQueryService
1111
{
12+
IObjectService ObjectService { get; }
1213
//Task<IEnumerable<T>> FindAsync<T>(MoralisQuery<T> query, MoralisUser user, CancellationToken cancellationToken = default) where T : MoralisObject;
1314

1415
//Task<IEnumerable<T>> AggregateAsync<T>(MoralisQuery<T> query, MoralisUser user, CancellationToken cancellationToken = default) where T : MoralisObject;

Assets/MoralisWeb3ApiSdk/Moralis/MoralisDotNet/Platform/Queries/MoralisQuery.cs

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -591,7 +591,18 @@ public MoralisQuery(IQueryService queryService, IInstallationService installatio
591591
public Task<IEnumerable<T>> AggregateAsync(CancellationToken cancellationToken)
592592
{
593593
EnsureNotInstallationQuery();
594-
return QueryService.AggregateAsync<T>(this, SessionToken, cancellationToken).OnSuccess(task => task.Result);
594+
//return QueryService.AggregateAsync<T>(this, SessionToken, cancellationToken).OnSuccess(task => task.Result);
595+
return QueryService.AggregateAsync<T>(this, SessionToken, cancellationToken).OnSuccess(task => {
596+
IEnumerable<T> items = task.Result;
597+
598+
foreach (T i in items)
599+
{
600+
i.ObjectService = this.QueryService.ObjectService;
601+
i.SessionToken = this.SessionToken;
602+
}
603+
604+
return items;
605+
});
595606
}
596607

597608
/// <summary>
@@ -608,7 +619,18 @@ public Task<IEnumerable<T>> AggregateAsync(CancellationToken cancellationToken)
608619
public Task<IEnumerable<T>> FindAsync(CancellationToken cancellationToken)
609620
{
610621
EnsureNotInstallationQuery();
611-
return QueryService.FindAsync(this, SessionToken, cancellationToken).OnSuccess(task => task.Result);
622+
return QueryService.FindAsync(this, SessionToken, cancellationToken).OnSuccess(task =>
623+
{
624+
IEnumerable<T> items = task.Result;
625+
626+
foreach (T i in items)
627+
{
628+
i.ObjectService = this.QueryService.ObjectService;
629+
i.SessionToken = this.SessionToken;
630+
}
631+
632+
return items;
633+
}); //task.Result);
612634
}
613635

614636
/// <summary>
@@ -625,7 +647,17 @@ public Task<IEnumerable<T>> FindAsync(CancellationToken cancellationToken)
625647
public Task<IEnumerable<T>> DistinctAsync(CancellationToken cancellationToken)
626648
{
627649
EnsureNotInstallationQuery();
628-
return QueryService.DistinctAsync(this, SessionToken, cancellationToken).OnSuccess(task => task.Result);
650+
return QueryService.DistinctAsync(this, SessionToken, cancellationToken).OnSuccess(task => {
651+
IEnumerable<T> items = task.Result;
652+
653+
foreach (T i in items)
654+
{
655+
i.ObjectService = this.QueryService.ObjectService;
656+
i.SessionToken = this.SessionToken;
657+
}
658+
659+
return items;
660+
}); // task.Result);
629661
}
630662

631663
/// <summary>
@@ -642,7 +674,14 @@ public Task<IEnumerable<T>> DistinctAsync(CancellationToken cancellationToken)
642674
public Task<T> FirstOrDefaultAsync(CancellationToken cancellationToken)
643675
{
644676
EnsureNotInstallationQuery();
645-
return QueryService.FirstAsync<T>(this, SessionToken, cancellationToken).OnSuccess(task => task.Result);
677+
return QueryService.FirstAsync<T>(this, SessionToken, cancellationToken).OnSuccess(task => {
678+
T i = task.Result;
679+
680+
i.ObjectService = this.QueryService.ObjectService;
681+
i.SessionToken = this.SessionToken;
682+
683+
return i;
684+
}); // task.Result);
646685
}
647686

648687
/// <summary>

Assets/MoralisWeb3ApiSdk/Moralis/MoralisDotNet/Platform/Services/ClientServices/MoralisUserService.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ public Task<TUser> LogInAsync(string authType, IDictionary<string, object> data,
4747
if ((int)task.Result.Item1 < 300)
4848
{
4949
user = JsonSerializer.Deserialize<TUser>(task.Result.Item2.ToString());
50-
user.SessionToken = user.SessionToken;
5150
}
5251

5352
return user;

Assets/MoralisWeb3ApiSdk/Moralis/MoralisDotNet/Platform/Services/Infrastructure/MoralisQueryService.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ internal class MoralisQueryService : IQueryService
2020
IJsonSerializer JsonSerializer { get; }
2121
string SessionToken { get; }
2222

23-
public MoralisQueryService(IMoralisCommandRunner commandRunner, string sessionToken, IJsonSerializer jsonSerializer) => (CommandRunner, SessionToken, JsonSerializer) = (commandRunner, sessionToken, jsonSerializer);
23+
public IObjectService ObjectService { get; }
24+
25+
public MoralisQueryService(IMoralisCommandRunner commandRunner, string sessionToken, IJsonSerializer jsonSerializer, IObjectService objectService) => (CommandRunner, SessionToken, JsonSerializer, ObjectService) = (commandRunner, sessionToken, jsonSerializer, objectService);
2426

2527
public Task<IEnumerable<T>> FindAsync<T>(MoralisQuery<T> query, string sessionToken, CancellationToken cancellationToken = default) where T : MoralisObject => FindAsync(query.ClassName, query.BuildParameters(), sessionToken, cancellationToken).OnSuccess(t => JsonSerializer.Deserialize<List<T>>(t.Result) as IEnumerable<T>);
2628

Assets/MoralisWeb3ApiSdk/Moralis/MoralisDotNet/Platform/Services/MutableServiceHub.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public MutableServiceHub<TUser> SetDefaults(IServerConnectionData connectionData
8181
//ConfigurationController ??= new ParseConfigurationController(CommandRunner, CacheController, Decoder);
8282
FileService ??= new MoralisFileService(CommandRunner, JsonSerializer);
8383
ObjectService ??= new MoralisObjectService(CommandRunner, ServerConnectionData, JsonSerializer);
84-
QueryService ??= new MoralisQueryService(CommandRunner, this.CurrentUserService.CurrentUser.SessionToken, JsonSerializer);
84+
QueryService ??= new MoralisQueryService(CommandRunner, this.CurrentUserService.CurrentUser.SessionToken, JsonSerializer, ObjectService);
8585
SessionService ??= new MoralisSessionService<TUser>(CommandRunner, JsonSerializer);
8686
UserService ??= new MoralisUserService<TUser>(CommandRunner, JsonSerializer);
8787
CurrentUserService ??= new MoralisCurrentUserService<TUser>(CacheService, JsonSerializer);

0 commit comments

Comments
 (0)