Fix routes.

This commit is contained in:
2025-11-14 20:58:41 +00:00
parent 7ede62514f
commit 4f1aee302b
7 changed files with 192 additions and 41 deletions

View File

@@ -3,12 +3,9 @@
using Marechai.App.Auth;
using Marechai.App.Books;
using Marechai.App.BrowserTests;
using Marechai.App.ByLetter;
using Marechai.App.ByYear;
using Marechai.App.Companies;
using Marechai.App.Computers;
using Marechai.App.Consoles;
using Marechai.App.Count;
using Marechai.App.Countries;
using Marechai.App.Currencies;
using Marechai.App.Documents;
@@ -25,10 +22,8 @@ using Marechai.App.Machines;
using Marechai.App.Magazines;
using Marechai.App.MagazinesByMachine;
using Marechai.App.MagazinesByMachineFamily;
using Marechai.App.MaximumYear;
using Marechai.App.Medias;
using Marechai.App.MemoriesByMachine;
using Marechai.App.MinimumYear;
using Marechai.App.News;
using Marechai.App.People;
using Marechai.App.PeopleByBook;
@@ -79,16 +74,6 @@ namespace Marechai.App
{
get => new global::Marechai.App.BrowserTests.BrowserTestsRequestBuilder(PathParameters, RequestAdapter);
}
/// <summary>The byLetter property</summary>
public global::Marechai.App.ByLetter.ByLetterRequestBuilder ByLetter
{
get => new global::Marechai.App.ByLetter.ByLetterRequestBuilder(PathParameters, RequestAdapter);
}
/// <summary>The byYear property</summary>
public global::Marechai.App.ByYear.ByYearRequestBuilder ByYear
{
get => new global::Marechai.App.ByYear.ByYearRequestBuilder(PathParameters, RequestAdapter);
}
/// <summary>The companies property</summary>
public global::Marechai.App.Companies.CompaniesRequestBuilder Companies
{
@@ -104,11 +89,6 @@ namespace Marechai.App
{
get => new global::Marechai.App.Consoles.ConsolesRequestBuilder(PathParameters, RequestAdapter);
}
/// <summary>The count property</summary>
public global::Marechai.App.Count.CountRequestBuilder Count
{
get => new global::Marechai.App.Count.CountRequestBuilder(PathParameters, RequestAdapter);
}
/// <summary>The countries property</summary>
public global::Marechai.App.Countries.CountriesRequestBuilder Countries
{
@@ -189,11 +169,6 @@ namespace Marechai.App
{
get => new global::Marechai.App.MagazinesByMachineFamily.MagazinesByMachineFamilyRequestBuilder(PathParameters, RequestAdapter);
}
/// <summary>The maximumYear property</summary>
public global::Marechai.App.MaximumYear.MaximumYearRequestBuilder MaximumYear
{
get => new global::Marechai.App.MaximumYear.MaximumYearRequestBuilder(PathParameters, RequestAdapter);
}
/// <summary>The medias property</summary>
public global::Marechai.App.Medias.MediasRequestBuilder Medias
{
@@ -204,11 +179,6 @@ namespace Marechai.App
{
get => new global::Marechai.App.MemoriesByMachine.MemoriesByMachineRequestBuilder(PathParameters, RequestAdapter);
}
/// <summary>The minimumYear property</summary>
public global::Marechai.App.MinimumYear.MinimumYearRequestBuilder MinimumYear
{
get => new global::Marechai.App.MinimumYear.MinimumYearRequestBuilder(PathParameters, RequestAdapter);
}
/// <summary>The news property</summary>
public global::Marechai.App.News.NewsRequestBuilder News
{

View File

@@ -1,5 +1,10 @@
// <auto-generated/>
#pragma warning disable CS0618
using Marechai.App.Computers.ByLetter;
using Marechai.App.Computers.ByYear;
using Marechai.App.Computers.Count;
using Marechai.App.Computers.MaximumYear;
using Marechai.App.Computers.MinimumYear;
using Marechai.App.Models;
using Microsoft.Kiota.Abstractions.Extensions;
using Microsoft.Kiota.Abstractions.Serialization;
@@ -17,6 +22,31 @@ namespace Marechai.App.Computers
[global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
public partial class ComputersRequestBuilder : BaseRequestBuilder
{
/// <summary>The byLetter property</summary>
public global::Marechai.App.Computers.ByLetter.ByLetterRequestBuilder ByLetter
{
get => new global::Marechai.App.Computers.ByLetter.ByLetterRequestBuilder(PathParameters, RequestAdapter);
}
/// <summary>The byYear property</summary>
public global::Marechai.App.Computers.ByYear.ByYearRequestBuilder ByYear
{
get => new global::Marechai.App.Computers.ByYear.ByYearRequestBuilder(PathParameters, RequestAdapter);
}
/// <summary>The count property</summary>
public global::Marechai.App.Computers.Count.CountRequestBuilder Count
{
get => new global::Marechai.App.Computers.Count.CountRequestBuilder(PathParameters, RequestAdapter);
}
/// <summary>The maximumYear property</summary>
public global::Marechai.App.Computers.MaximumYear.MaximumYearRequestBuilder MaximumYear
{
get => new global::Marechai.App.Computers.MaximumYear.MaximumYearRequestBuilder(PathParameters, RequestAdapter);
}
/// <summary>The minimumYear property</summary>
public global::Marechai.App.Computers.MinimumYear.MinimumYearRequestBuilder MinimumYear
{
get => new global::Marechai.App.Computers.MinimumYear.MinimumYearRequestBuilder(PathParameters, RequestAdapter);
}
/// <summary>
/// Instantiates a new <see cref="global::Marechai.App.Computers.ComputersRequestBuilder"/> and sets the default values.
/// </summary>

View File

@@ -1,5 +1,10 @@
// <auto-generated/>
#pragma warning disable CS0618
using Marechai.App.Consoles.ByLetter;
using Marechai.App.Consoles.ByYear;
using Marechai.App.Consoles.Count;
using Marechai.App.Consoles.MaximumYear;
using Marechai.App.Consoles.MinimumYear;
using Marechai.App.Models;
using Microsoft.Kiota.Abstractions.Extensions;
using Microsoft.Kiota.Abstractions.Serialization;
@@ -17,6 +22,31 @@ namespace Marechai.App.Consoles
[global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
public partial class ConsolesRequestBuilder : BaseRequestBuilder
{
/// <summary>The byLetter property</summary>
public global::Marechai.App.Consoles.ByLetter.ByLetterRequestBuilder ByLetter
{
get => new global::Marechai.App.Consoles.ByLetter.ByLetterRequestBuilder(PathParameters, RequestAdapter);
}
/// <summary>The byYear property</summary>
public global::Marechai.App.Consoles.ByYear.ByYearRequestBuilder ByYear
{
get => new global::Marechai.App.Consoles.ByYear.ByYearRequestBuilder(PathParameters, RequestAdapter);
}
/// <summary>The count property</summary>
public global::Marechai.App.Consoles.Count.CountRequestBuilder Count
{
get => new global::Marechai.App.Consoles.Count.CountRequestBuilder(PathParameters, RequestAdapter);
}
/// <summary>The maximumYear property</summary>
public global::Marechai.App.Consoles.MaximumYear.MaximumYearRequestBuilder MaximumYear
{
get => new global::Marechai.App.Consoles.MaximumYear.MaximumYearRequestBuilder(PathParameters, RequestAdapter);
}
/// <summary>The minimumYear property</summary>
public global::Marechai.App.Consoles.MinimumYear.MinimumYearRequestBuilder MinimumYear
{
get => new global::Marechai.App.Consoles.MinimumYear.MinimumYearRequestBuilder(PathParameters, RequestAdapter);
}
/// <summary>
/// Instantiates a new <see cref="global::Marechai.App.Consoles.ConsolesRequestBuilder"/> and sets the default values.
/// </summary>

View File

@@ -1,5 +1,5 @@
{
"descriptionHash": "4C4317F1318B3D4CA2225D2F84196E63FE3991CAA0B4FAC3BDA2432C98D3457223C321CFD97E2BC392D20DCE9E265F204F4B0E90C7FE300BC876152A4FC07520",
"descriptionHash": "1CBF8A151B68ADF959BF4CE97533C13CE3C5B8E0425C6F097F0EF8A5308B53C6DA208B6B18CF8A0B949DD033B070BB2A4B530F0F64BBBAA487D86887990865AF",
"descriptionLocation": "http://localhost:5023/openapi/v1.json",
"lockFileVersion": "1.0.0",
"kiotaVersion": "1.29.0",

View File

@@ -0,0 +1,121 @@
using System;
using System.Threading.Tasks;
using Microsoft.Kiota.Abstractions.Serialization;
namespace Marechai.App.Services;
/// <summary>
/// Service for fetching and managing computers from the Marechai API
/// </summary>
public class ComputersService
{
private readonly ApiClient _apiClient;
private readonly ILogger<ComputersService> _logger;
public ComputersService(ApiClient apiClient, ILogger<ComputersService> logger)
{
_apiClient = apiClient;
_logger = logger;
}
/// <summary>
/// Fetches the total count of computers from the API
/// </summary>
/// <returns>Total number of computers, or 0 if API call fails</returns>
public async Task<int> GetComputersCountAsync()
{
try
{
_logger.LogInformation("Fetching computers count from API");
UntypedNode result = await _apiClient.Computers.Count.GetAsync();
// Extract integer value from UntypedNode
// UntypedNode wraps a JsonElement, we need to parse it
int count = ExtractIntFromUntypedNode(result);
_logger.LogInformation("Successfully fetched computers count: {Count}", count);
return count;
}
catch(Exception ex)
{
_logger.LogError(ex, "Error fetching computers count from API");
return 0;
}
}
/// <summary>
/// Fetches the minimum year of computers from the API
/// </summary>
/// <returns>Minimum year, or 0 if API call fails</returns>
public async Task<int> GetMinimumYearAsync()
{
try
{
_logger.LogInformation("Fetching minimum year from API");
UntypedNode result = await _apiClient.Computers.MinimumYear.GetAsync();
// Extract integer value from UntypedNode
int year = ExtractIntFromUntypedNode(result);
_logger.LogInformation("Successfully fetched minimum year: {Year}", year);
return year;
}
catch(Exception ex)
{
_logger.LogError(ex, "Error fetching minimum year from API");
return 0;
}
}
/// <summary>
/// Fetches the maximum year of computers from the API
/// </summary>
/// <returns>Maximum year, or 0 if API call fails</returns>
public async Task<int> GetMaximumYearAsync()
{
try
{
_logger.LogInformation("Fetching maximum year from API");
UntypedNode result = await _apiClient.Computers.MaximumYear.GetAsync();
// Extract integer value from UntypedNode
int year = ExtractIntFromUntypedNode(result);
_logger.LogInformation("Successfully fetched maximum year: {Year}", year);
return year;
}
catch(Exception ex)
{
_logger.LogError(ex, "Error fetching maximum year from API");
return 0;
}
}
/// <summary>
/// Helper method to extract an integer from an UntypedNode
/// </summary>
private int ExtractIntFromUntypedNode(UntypedNode node)
{
if(node == null) return 0;
try
{
// Cast to UntypedInteger to access the Value property
if(node is UntypedInteger intNode) return intNode.GetValue();
// Fallback: try to parse ToString() result
var stringValue = node.ToString();
if(!string.IsNullOrWhiteSpace(stringValue) && int.TryParse(stringValue, out int result)) return result;
return 0;
}
catch
{
return 0;
}
}
}

View File

@@ -40,13 +40,13 @@ namespace Marechai.Server.Controllers;
[ApiController]
public class ComputersController(MarechaiContext context) : ControllerBase
{
[HttpGet("/count")]
[HttpGet("count")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public Task<int> GetComputersCountAsync() => context.Machines.CountAsync(c => c.Type == MachineType.Computer);
[HttpGet("/minimum-year")]
[HttpGet("minimum-year")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -56,7 +56,7 @@ public class ComputersController(MarechaiContext context) : ControllerBase
t.Introduced.Value.Year > 1000)
.MinAsync(t => t.Introduced.Value.Year);
[HttpGet("/maximum-year")]
[HttpGet("maximum-year")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -66,7 +66,7 @@ public class ComputersController(MarechaiContext context) : ControllerBase
t.Introduced.Value.Year > 1000)
.MaxAsync(t => t.Introduced.Value.Year);
[HttpGet("/by-letter/{c}")]
[HttpGet("by-letter/{c}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -84,7 +84,7 @@ public class ComputersController(MarechaiContext context) : ControllerBase
})
.ToListAsync();
[HttpGet("/by-year/{year:int}")]
[HttpGet("by-year/{year:int}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -40,13 +40,13 @@ namespace Marechai.Server.Controllers;
[ApiController]
public class ConsolesController(MarechaiContext context) : ControllerBase
{
[HttpGet("/count")]
[HttpGet("count")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public Task<int> GetConsolesCountAsync() => context.Machines.CountAsync(c => c.Type == MachineType.Console);
[HttpGet("/minimum-year")]
[HttpGet("minimum-year")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -56,7 +56,7 @@ public class ConsolesController(MarechaiContext context) : ControllerBase
t.Introduced.Value.Year > 1000)
.MinAsync(t => t.Introduced.Value.Year);
[HttpGet("/maximum-year")]
[HttpGet("maximum-year")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -66,7 +66,7 @@ public class ConsolesController(MarechaiContext context) : ControllerBase
t.Introduced.Value.Year > 1000)
.MaxAsync(t => t.Introduced.Value.Year);
[HttpGet("/by-letter/{c}")]
[HttpGet("by-letter/{c}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -84,7 +84,7 @@ public class ConsolesController(MarechaiContext context) : ControllerBase
})
.ToListAsync();
[HttpGet("/by-year/{year:int}")]
[HttpGet("by-year/{year:int}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]