mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-10-14 17:54:42 +00:00
Update doc comments in Features.Breweries source (#279)
This commit is contained in:
@@ -2,8 +2,12 @@ using Domain.Entities;
|
||||
|
||||
namespace Features.Breweries.Dtos;
|
||||
|
||||
/// <summary>Location details of a brewery, as returned by the API.</summary>
|
||||
/// <param name="Coordinates">The brewery's geographic coordinates, in a raw binary representation.</param>
|
||||
/// <summary>
|
||||
/// Represents location data returned for a brewery post.
|
||||
/// </summary>
|
||||
/// <param name="Coordinates">
|
||||
/// Contains the serialized geographic coordinates, when available.
|
||||
/// </param>
|
||||
public record BreweryLocationDto(
|
||||
Guid BreweryPostLocationId,
|
||||
Guid CityId,
|
||||
@@ -18,10 +22,18 @@ public record BreweryLocationDto(
|
||||
CoordinateData? Coordinates
|
||||
);
|
||||
|
||||
/// <summary>A brewery post, as returned by the API.</summary>
|
||||
/// <param name="UpdatedAt">The date and time of the last edit, or <see langword="null"/> if never edited.</param>
|
||||
/// <param name="RowVersion">The row-version/concurrency token used to detect conflicting concurrent updates.</param>
|
||||
/// <param name="Location">The brewery's location, or <see langword="null"/> if none has been set.</param>
|
||||
/// <summary>
|
||||
/// Represents a brewery post returned by the API.
|
||||
/// </summary>
|
||||
/// <param name="UpdatedAt">
|
||||
/// Records the most recent update time, if the post has been updated.
|
||||
/// </param>
|
||||
/// <param name="RowVersion">
|
||||
/// Provides the concurrency token required for updates.
|
||||
/// </param>
|
||||
/// <param name="Location">
|
||||
/// Contains the post's location, when one is available.
|
||||
/// </param>
|
||||
public record BreweryDto(
|
||||
Guid BreweryPostId,
|
||||
Guid PostedById,
|
||||
@@ -32,9 +44,12 @@ public record BreweryDto(
|
||||
byte[]? RowVersion,
|
||||
BreweryLocationDto? Location
|
||||
);
|
||||
|
||||
/// <summary>
|
||||
/// Represents the location-focused result returned by brewery searches.
|
||||
/// </summary>
|
||||
/// <param name="DistanceMetres">
|
||||
/// The distance, in metres, from a query's origin point, or <see langword="null"/> for queries with no
|
||||
/// origin point (e.g. <c>GET /api/brewery/locations</c>).
|
||||
/// Contains the distance from the search origin in metres, when applicable.
|
||||
/// </param>
|
||||
public record BreweryWithLocationDto(
|
||||
Guid BreweryPostId,
|
||||
|
||||
@@ -2,74 +2,62 @@ using Domain.Entities;
|
||||
|
||||
namespace Features.Breweries.Dtos;
|
||||
|
||||
/// <summary>Maps <see cref="BreweryPost" /> domain entities to <see cref="BreweryDto" />.</summary>
|
||||
/// <summary>
|
||||
/// Converts brewery domain entities into API response models.
|
||||
/// </summary>
|
||||
public static class BreweryDtoMapper
|
||||
{
|
||||
/// <summary>
|
||||
/// Converts a <see cref="BreweryPost" /> to its DTO representation, including its
|
||||
/// <see cref="BreweryDto.Location" /> if the entity has one.
|
||||
/// Converts a brewery post into its complete API representation.
|
||||
/// </summary>
|
||||
public static BreweryDto ToDto(this BreweryPost brewery)
|
||||
{
|
||||
return new BreweryDto(
|
||||
BreweryPostId: brewery.BreweryPostId,
|
||||
PostedById: brewery.PostedById,
|
||||
BreweryName: brewery.BreweryName,
|
||||
Description: brewery.Description,
|
||||
CreatedAt: brewery.CreatedAt,
|
||||
UpdatedAt: brewery.UpdatedAt,
|
||||
RowVersion: brewery.RowVersion,
|
||||
Location: brewery.Location is null
|
||||
public static BreweryDto ToDto(this BreweryPost brewery) =>
|
||||
new(
|
||||
brewery.BreweryPostId,
|
||||
brewery.PostedById,
|
||||
brewery.BreweryName,
|
||||
brewery.Description,
|
||||
brewery.CreatedAt,
|
||||
brewery.UpdatedAt,
|
||||
brewery.RowVersion,
|
||||
brewery.Location is null
|
||||
? null
|
||||
: new BreweryLocationDto(
|
||||
BreweryPostLocationId: brewery.Location.BreweryPostLocationId,
|
||||
CityId: brewery.Location.CityId,
|
||||
CityName: brewery.Location.City?.CityName ?? string.Empty,
|
||||
StateProvinceName: brewery.Location.City?.StateProvince?.StateProvinceName
|
||||
?? string.Empty,
|
||||
StateProvinceCode: brewery.Location.City?.StateProvince?.Iso31662
|
||||
?? string.Empty,
|
||||
CountryName: brewery.Location.City?.StateProvince?.Country?.CountryName
|
||||
?? string.Empty,
|
||||
CountryCode: brewery.Location.City?.StateProvince?.Country?.Iso31661
|
||||
?? string.Empty,
|
||||
AddressLine1: brewery.Location.AddressLine1,
|
||||
AddressLine2: brewery.Location.AddressLine2,
|
||||
PostalCode: brewery.Location.PostalCode,
|
||||
Coordinates: brewery.Location.Coordinates
|
||||
brewery.Location.BreweryPostLocationId,
|
||||
brewery.Location.CityId,
|
||||
brewery.Location.City?.CityName ?? string.Empty,
|
||||
brewery.Location.City?.StateProvince?.StateProvinceName ?? string.Empty,
|
||||
brewery.Location.City?.StateProvince?.Iso31662 ?? string.Empty,
|
||||
brewery.Location.City?.StateProvince?.Country?.CountryName ?? string.Empty,
|
||||
brewery.Location.City?.StateProvince?.Country?.Iso31661 ?? string.Empty,
|
||||
brewery.Location.AddressLine1,
|
||||
brewery.Location.AddressLine2,
|
||||
brewery.Location.PostalCode,
|
||||
brewery.Location.Coordinates
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts a <see cref="BreweryPost" /> to its simplified DTO representation, used for
|
||||
/// location-based queries that only need identifying and location details.
|
||||
/// Converts a brewery post into its location-search representation.
|
||||
/// </summary>
|
||||
public static BreweryWithLocationDto ToSimplifiedDto(this BreweryPost brewery)
|
||||
{
|
||||
return new BreweryWithLocationDto(
|
||||
BreweryPostId: brewery.BreweryPostId,
|
||||
BreweryName: brewery.BreweryName,
|
||||
Location: brewery.Location is null
|
||||
public static BreweryWithLocationDto ToSimplifiedDto(this BreweryPost brewery) =>
|
||||
new(
|
||||
brewery.BreweryPostId,
|
||||
brewery.BreweryName,
|
||||
brewery.Location is null
|
||||
? null
|
||||
: new BreweryLocationDto(
|
||||
BreweryPostLocationId: brewery.Location.BreweryPostLocationId,
|
||||
CityId: brewery.Location.CityId,
|
||||
CityName: brewery.Location.City?.CityName ?? string.Empty,
|
||||
StateProvinceName: brewery.Location.City?.StateProvince?.StateProvinceName
|
||||
?? string.Empty,
|
||||
StateProvinceCode: brewery.Location.City?.StateProvince?.Iso31662
|
||||
?? string.Empty,
|
||||
CountryName: brewery.Location.City?.StateProvince?.Country?.CountryName
|
||||
?? string.Empty,
|
||||
CountryCode: brewery.Location.City?.StateProvince?.Country?.Iso31661
|
||||
?? string.Empty,
|
||||
AddressLine1: brewery.Location.AddressLine1,
|
||||
AddressLine2: brewery.Location.AddressLine2,
|
||||
PostalCode: brewery.Location.PostalCode,
|
||||
Coordinates: brewery.Location.Coordinates
|
||||
brewery.Location.BreweryPostLocationId,
|
||||
brewery.Location.CityId,
|
||||
brewery.Location.City?.CityName ?? string.Empty,
|
||||
brewery.Location.City?.StateProvince?.StateProvinceName ?? string.Empty,
|
||||
brewery.Location.City?.StateProvince?.Iso31662 ?? string.Empty,
|
||||
brewery.Location.City?.StateProvince?.Country?.CountryName ?? string.Empty,
|
||||
brewery.Location.City?.StateProvince?.Country?.Iso31661 ?? string.Empty,
|
||||
brewery.Location.AddressLine1,
|
||||
brewery.Location.AddressLine2,
|
||||
brewery.Location.PostalCode,
|
||||
brewery.Location.Coordinates
|
||||
),
|
||||
DistanceMetres: brewery.Distance?.DistanceMetres
|
||||
brewery.Distance?.DistanceMetres
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user