Skip to content

Commit

Permalink
fiz api serializer context
Browse files Browse the repository at this point in the history
  • Loading branch information
mehalick committed Jun 4, 2024
1 parent 3911cb6 commit d1df08c
Show file tree
Hide file tree
Showing 17 changed files with 40 additions and 58 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,5 @@
[JsonSerializable(typeof(UpdateActivityRequest))]
[JsonSerializable(typeof(UpdateRoutineRequest))]
[JsonSourceGenerationOptions(PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)]
public partial class Serializer : JsonSerializerContext
public partial class ApiSerializer : JsonSerializerContext
{ }
32 changes: 16 additions & 16 deletions src/BananaTracks.Api.Shared/Clients/ApiClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,71 +17,71 @@ public ApiClient(HttpClient httpClient)

public async Task AddActivity(AddActivityRequest request)
{
await Post(ApiRoutes.AddActivity, request, Serializer.Default.AddActivityRequest);
await Post(ApiRoutes.AddActivity, request, ApiSerializer.Default.AddActivityRequest);
}

public async Task AddRoutine(AddRoutineRequest request)
{
await Post(ApiRoutes.AddRoutine, request, Serializer.Default.AddRoutineRequest);
await Post(ApiRoutes.AddRoutine, request, ApiSerializer.Default.AddRoutineRequest);
}

public async Task AddSession(AddSessionRequest request)
{
await Post(ApiRoutes.AddSession, request, Serializer.Default.AddSessionRequest);
await Post(ApiRoutes.AddSession, request, ApiSerializer.Default.AddSessionRequest);
}

public async Task<CreateRoutineResponse> CreateRoutine(CreateRoutineRequest request)
{
return await Post(ApiRoutes.CreateRoutine, request, Serializer.Default.CreateRoutineRequest, Serializer.Default.CreateRoutineResponse);
return await Post(ApiRoutes.CreateRoutine, request, ApiSerializer.Default.CreateRoutineRequest, ApiSerializer.Default.CreateRoutineResponse);
}

public async Task DeleteActivity(DeleteActivityRequest request)
{
await Post(ApiRoutes.DeleteActivity, request, Serializer.Default.DeleteActivityRequest);
await Post(ApiRoutes.DeleteActivity, request, ApiSerializer.Default.DeleteActivityRequest);
}

public async Task DeleteRoutine(DeleteRoutineRequest request)
{
await Post(ApiRoutes.DeleteRoutine, request, Serializer.Default.DeleteRoutineRequest);
await Post(ApiRoutes.DeleteRoutine, request, ApiSerializer.Default.DeleteRoutineRequest);
}

public async Task<GetActivityByIdResponse> GetActivityById(string activityId)
{
var url = $"{ApiRoutes.GetActivityById}?ActivityId={activityId}";

return await Get(url, Serializer.Default.GetActivityByIdResponse);
return await Get(url, ApiSerializer.Default.GetActivityByIdResponse);
}

public async Task<GetRoutineByIdResponse> GetRoutineById(string routineId)
{
var url = $"{ApiRoutes.GetRoutineById}?RoutineId={routineId}";

return await Get(url, Serializer.Default.GetRoutineByIdResponse);
return await Get(url, ApiSerializer.Default.GetRoutineByIdResponse);
}

public async Task<ListActivitiesResponse> ListActivities()
{
return await Get(ApiRoutes.ListActivities, Serializer.Default.ListActivitiesResponse);
return await Get(ApiRoutes.ListActivities, ApiSerializer.Default.ListActivitiesResponse);
}

public async Task<ListRoutinesResponse> ListRoutines()
{
return await Get(ApiRoutes.ListRoutines, Serializer.Default.ListRoutinesResponse);
return await Get(ApiRoutes.ListRoutines, ApiSerializer.Default.ListRoutinesResponse);
}

public async Task<ListSessionsResponse> ListSessions()
{
return await Get(ApiRoutes.ListSessions, Serializer.Default.ListSessionsResponse);
return await Get(ApiRoutes.ListSessions, ApiSerializer.Default.ListSessionsResponse);
}

public async Task UpdateActivity(UpdateActivityRequest request)
{
await Post(ApiRoutes.UpdateActivity, request, Serializer.Default.UpdateActivityRequest);
await Post(ApiRoutes.UpdateActivity, request, ApiSerializer.Default.UpdateActivityRequest);
}

public async Task UpdateRoutine(UpdateRoutineRequest request)
{
await Post(ApiRoutes.UpdateRoutine, request, Serializer.Default.UpdateRoutineRequest);
await Post(ApiRoutes.UpdateRoutine, request, ApiSerializer.Default.UpdateRoutineRequest);
}

private async Task<T> Get<T>(string uri, JsonTypeInfo<T> typeInfo, [CallerMemberName] string callerName = "") where T : new()
Expand Down Expand Up @@ -116,11 +116,11 @@ public async Task UpdateRoutine(UpdateRoutineRequest request)
ex.Redirect();
}
}

private async Task<TResponse> Post<TRequest, TResponse>(string uri, TRequest request, JsonTypeInfo<TRequest> requestTypeInfo, JsonTypeInfo<TResponse> responseTypeInfo, [CallerMemberName] string callerName = "") where TRequest : new()
{
var result = default(TResponse);

try
{
var response = await _httpClient.PostAsJsonAsync(uri, request, requestTypeInfo);
Expand All @@ -133,7 +133,7 @@ public async Task UpdateRoutine(UpdateRoutineRequest request)
{
ex.Redirect();
}

if (result is null)
{
throw new NullReferenceException($"Null result returned from API call '{callerName}'.");
Expand Down
2 changes: 1 addition & 1 deletion src/BananaTracks.Api/Endpoints/AddActivity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ internal class AddActivity : Endpoint<AddActivityRequest>
public override void Configure()
{
Post(ApiRoutes.AddActivity);
SerializerContext(Serializer.Default);
SerializerContext(ApiSerializer.Default);
}

public AddActivity(IHttpContextAccessor httpContextAccessor, IDynamoDBContext dynamoDbContext, QueueProvider queueProvider)
Expand Down
2 changes: 1 addition & 1 deletion src/BananaTracks.Api/Endpoints/AddRoutine.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ internal class AddRoutine : Endpoint<AddRoutineRequest>
public override void Configure()
{
Post(ApiRoutes.AddRoutine);
SerializerContext(Serializer.Default);
SerializerContext(ApiSerializer.Default);
}

public AddRoutine(IHttpContextAccessor httpContextAccessor, IDynamoDBContext dynamoDbContext, QueueProvider queueProvider, ILogger<AddRoutine> log)
Expand Down
2 changes: 1 addition & 1 deletion src/BananaTracks.Api/Endpoints/AddSession.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ internal class AddSession : Endpoint<AddSessionRequest>
public override void Configure()
{
Post(ApiRoutes.AddSession);
SerializerContext(Serializer.Default);
SerializerContext(ApiSerializer.Default);
}

public AddSession(IHttpContextAccessor httpContextAccessor, QueueProvider queueProvider)
Expand Down
2 changes: 1 addition & 1 deletion src/BananaTracks.Api/Endpoints/CreateRoutine.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ internal class CreateRoutine : Endpoint<CreateRoutineRequest, CreateRoutineRespo
public override void Configure()
{
Post(ApiRoutes.CreateRoutine);
SerializerContext(Serializer.Default);
SerializerContext(ApiSerializer.Default);
}

private readonly IHttpContextAccessor _httpContextAccessor;
Expand Down
2 changes: 1 addition & 1 deletion src/BananaTracks.Api/Endpoints/DeleteActivity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ internal class DeleteActivity : Endpoint<DeleteActivityRequest>
public override void Configure()
{
Post(ApiRoutes.DeleteActivity);
SerializerContext(Serializer.Default);
SerializerContext(ApiSerializer.Default);
}

public DeleteActivity(IHttpContextAccessor httpContextAccessor, IDynamoDBContext dynamoDbContext, IWebHostEnvironment webHostEnvironment)
Expand Down
2 changes: 1 addition & 1 deletion src/BananaTracks.Api/Endpoints/DeleteRoutine.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ internal class DeleteRoutine : Endpoint<DeleteRoutineRequest>
public override void Configure()
{
Post(ApiRoutes.DeleteRoutine);
SerializerContext(Serializer.Default);
SerializerContext(ApiSerializer.Default);
}

public DeleteRoutine(IHttpContextAccessor httpContextAccessor, IDynamoDBContext dynamoDbContext, IWebHostEnvironment webHostEnvironment)
Expand Down
2 changes: 1 addition & 1 deletion src/BananaTracks.Api/Endpoints/GetActivityById.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ internal class GetActivityById : Endpoint<GetActivityByIdRequest, GetActivityByI
public override void Configure()
{
Get(ApiRoutes.GetActivityById);
SerializerContext(Serializer.Default);
SerializerContext(ApiSerializer.Default);
}

public GetActivityById(IHttpContextAccessor httpContextAccessor, IDynamoDBContext dynamoDbContext)
Expand Down
2 changes: 1 addition & 1 deletion src/BananaTracks.Api/Endpoints/GetRoutineById.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ internal class GetRoutineById : Endpoint<GetRoutineByIdRequest, GetRoutineByIdRe
public override void Configure()
{
Get(ApiRoutes.GetRoutineById);
SerializerContext(Serializer.Default);
SerializerContext(ApiSerializer.Default);
}

public GetRoutineById(IHttpContextAccessor httpContextAccessor, IDynamoDBContext dynamoDbContext)
Expand Down
2 changes: 1 addition & 1 deletion src/BananaTracks.Api/Endpoints/ListActivities.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public class ListActivities : EndpointWithoutRequest<ListActivitiesResponse>
public override void Configure()
{
Get(ApiRoutes.ListActivities);
SerializerContext(Serializer.Default);
SerializerContext(ApiSerializer.Default);
}

public ListActivities(IHttpContextAccessor httpContextAccessor, IDynamoDBContext dynamoDbContext)
Expand Down
19 changes: 9 additions & 10 deletions src/BananaTracks.Api/Endpoints/ListRoutines.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public class ListRoutines : EndpointWithoutRequest<ListRoutinesResponse>
public override void Configure()
{
Get(ApiRoutes.ListRoutines);
SerializerContext(Serializer.Default);
SerializerContext(ApiSerializer.Default);
}

public ListRoutines(IHttpContextAccessor httpContextAccessor, IDynamoDBContext dynamoDbContext)
Expand All @@ -20,26 +20,25 @@ public ListRoutines(IHttpContextAccessor httpContextAccessor, IDynamoDBContext d
public override async Task HandleAsync(CancellationToken cancellationToken)
{
var userId = _httpContextAccessor.GetUserId();
var getRoutinesTask = GetRoutines(userId, cancellationToken);
var getActivitiesTask = GetActivities(userId, cancellationToken);

await Task.WhenAll(getRoutinesTask, getActivitiesTask);
var activities = await GetActivities(userId, cancellationToken);
var routines = await GetRoutines(userId, cancellationToken);

Response = new()
{
Routines = getRoutinesTask
.Result
Routines = routines
.Active()
.OrderBy(i => i.Name)
.Select(i => i.ToModel(getActivitiesTask.Result.Where(j => j.RoutineId == i.RoutineId)))
.Select(i => i.ToModel(activities.Where(j => j.RoutineId == i.RoutineId)))
};
}

private Task<List<Routine>> GetRoutines(string userId, CancellationToken cancellationToken)
private async Task<List<Routine>> GetRoutines(string userId, CancellationToken cancellationToken)
{
return _dynamoDbContext
var results = await _dynamoDbContext
.QueryAsync<Routine>(userId)
.GetRemainingAsync(cancellationToken);

return results;
}

private async Task<List<Activity>> GetActivities(string userId, CancellationToken cancellationToken)
Expand Down
2 changes: 1 addition & 1 deletion src/BananaTracks.Api/Endpoints/ListSessions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public class ListSessions : EndpointWithoutRequest<ListSessionsResponse>
public override void Configure()
{
Get(ApiRoutes.ListSessions);
SerializerContext(Serializer.Default);
SerializerContext(ApiSerializer.Default);
}

public ListSessions(IHttpContextAccessor httpContextAccessor, IDynamoDBContext dynamoDbContext)
Expand Down
2 changes: 1 addition & 1 deletion src/BananaTracks.Api/Endpoints/UpdateActivity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ internal class UpdateActivity : Endpoint<UpdateActivityRequest>
public override void Configure()
{
Post(ApiRoutes.UpdateActivity);
SerializerContext(Serializer.Default);
SerializerContext(ApiSerializer.Default);
}

public UpdateActivity(IHttpContextAccessor httpContextAccessor, IDynamoDBContext dynamoDbContext,
Expand Down
2 changes: 1 addition & 1 deletion src/BananaTracks.Api/Endpoints/UpdateRoutine.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public class UpdateRoutine : Endpoint<UpdateRoutineRequest>
public override void Configure()
{
Post(ApiRoutes.UpdateRoutine);
SerializerContext(Serializer.Default);
SerializerContext(ApiSerializer.Default);
}

public UpdateRoutine(IHttpContextAccessor httpContextAccessor, IDynamoDBContext dynamoDbContext)
Expand Down
1 change: 1 addition & 0 deletions src/BananaTracks.Api/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
global using Amazon.DynamoDBv2.DataModel;
global using BananaTracks.Api.Extensions;
global using BananaTracks.Api.Providers;
global using BananaTracks.Api.Shared;
global using BananaTracks.Api.Shared.Constants;
global using BananaTracks.Api.Shared.Requests;
global using BananaTracks.Api.Shared.Responses;
Expand Down
20 changes: 1 addition & 19 deletions src/BananaTracks.App/Pages/Index.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,20 +39,7 @@ protected override async Task OnInitializedAsync()
return;
}

var routines = await LocalStorageService.GetItemAsync<IReadOnlyCollection<RoutineModel>>("RecentRoutines");

if (routines?.Any() == true)
{
_recentRunRoutines = routines;

StateHasChanged();

await GetRecentRoutines();
}
else
{
_recentRunRoutines = await GetRecentRoutines();
}
_recentRunRoutines = await GetRecentRoutines();
}

private async Task<IReadOnlyCollection<RoutineModel>> GetRecentRoutines()
Expand All @@ -64,11 +51,6 @@ private async Task<IReadOnlyCollection<RoutineModel>> GetRecentRoutines()
.Take(3)
.ToList();

if (routines.Any())
{
await LocalStorageService.SetItemAsync("RecentRoutines", routines);
}

return routines;
}
}

0 comments on commit d1df08c

Please sign in to comment.