mirror of
https://github.com/claunia/marechai.git
synced 2026-07-08 17:57:08 +00:00
Continues the prior commit (model/migrations/server) by finishing every
remaining consumer of the SoftwareCompilation entity introduced there.
- Regenerate Marechai.ApiClient from the updated OpenAPI schema: new
SoftwareCompilations request builders and DTOs
(SoftwareCompilationDto, SoftwareCompilationSuccessorDto,
SoftwareBySoftwareCompilationDto, SoftwareVersionBySoftwareCompilationDto),
SoftwareReleaseDto's IsCompilation replaced with SoftwareCompilationId/
SoftwareCompilation. Commit the openapi.yaml snapshot used to drive the
regeneration.
- Marechai (Blazor): add SoftwareCompilationsService and a full admin UI
for the new entity (SoftwareCompilations grid + SoftwareCompilationDialog
with bundled-software/machine pickers, predecessor/relationship type,
and tabs for included software, included versions, sub-compilations,
and releases) plus a public detail page at /software-compilation/{id}.
SoftwareReleaseDialog drops the old IsCompilation checkbox and per-release
included-items management in favor of a SoftwareCompilation autocomplete
picker, since compilation membership now lives on the compilation entity
itself rather than on individual releases. Updated every remaining
IsCompilation/old-junction-DTO reference in release dialogs, the public
release/software view pages, and the suggestion dialog. Search.razor now
routes compilation rows to /software-compilation/{id} instead of a release.
- Marechai.App (Uno): mechanical fixes for the removed IsCompilation
property and old junction DTOs, and the same scope cut as the Blazor
app — included-items management removed from the release editor and
read-only release view (that UI now belongs solely on the compilation),
with the now-dead helper methods and XAML sections removed.
- Marechai.MobyGames: CompilationRelationService and ImportService now
create a real SoftwareCompilation row instead of flipping a release flag,
and resolve each contained slug to either a Software or an existing
SoftwareCompilation. This fixes a long-standing bug where a slug
previously converted into a compilation had no replacement pointer
recorded on MobyGamesImportState, so re-encountering it as a nested
member of another compilation could never resolve. Nested compilations
are now linked via SoftwareCompilationBySoftwareCompilation.
StateService.MarkImportedAsync gained a softwareCompilationId parameter,
and OrphanCleanupService's software-merge dedup pass was re-keyed from
the old release-keyed junction to SoftwareBySoftwareCompilation.
Full solution build is clean with no pending EF model changes against the
three migrations from the prior commit.
84 lines
4.0 KiB
C#
84 lines
4.0 KiB
C#
// <auto-generated/>
|
|
#pragma warning disable CS0618
|
|
using Microsoft.Kiota.Abstractions.Extensions;
|
|
using Microsoft.Kiota.Abstractions.Serialization;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System;
|
|
namespace Marechai.ApiClient.Models
|
|
{
|
|
[global::System.CodeDom.Compiler.GeneratedCode("Kiota", "1.0.0")]
|
|
#pragma warning disable CS1591
|
|
public partial class SoftwareVersionBySoftwareCompilationDto : IAdditionalDataHolder, IParsable
|
|
#pragma warning restore CS1591
|
|
{
|
|
/// <summary>Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.</summary>
|
|
public IDictionary<string, object> AdditionalData { get; set; }
|
|
/// <summary>The software_compilation_id property</summary>
|
|
public int? SoftwareCompilationId { get; set; }
|
|
/// <summary>The software_name property</summary>
|
|
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
|
|
#nullable enable
|
|
public string? SoftwareName { get; set; }
|
|
#nullable restore
|
|
#else
|
|
public string SoftwareName { get; set; }
|
|
#endif
|
|
/// <summary>The software_version property</summary>
|
|
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
|
|
#nullable enable
|
|
public string? SoftwareVersion { get; set; }
|
|
#nullable restore
|
|
#else
|
|
public string SoftwareVersion { get; set; }
|
|
#endif
|
|
/// <summary>The software_version_id property</summary>
|
|
public int? SoftwareVersionId { get; set; }
|
|
/// <summary>
|
|
/// Instantiates a new <see cref="global::Marechai.ApiClient.Models.SoftwareVersionBySoftwareCompilationDto"/> and sets the default values.
|
|
/// </summary>
|
|
public SoftwareVersionBySoftwareCompilationDto()
|
|
{
|
|
AdditionalData = new Dictionary<string, object>();
|
|
}
|
|
/// <summary>
|
|
/// Creates a new instance of the appropriate class based on discriminator value
|
|
/// </summary>
|
|
/// <returns>A <see cref="global::Marechai.ApiClient.Models.SoftwareVersionBySoftwareCompilationDto"/></returns>
|
|
/// <param name="parseNode">The parse node to use to read the discriminator value and create the object</param>
|
|
public static global::Marechai.ApiClient.Models.SoftwareVersionBySoftwareCompilationDto CreateFromDiscriminatorValue(IParseNode parseNode)
|
|
{
|
|
if(ReferenceEquals(parseNode, null)) throw new ArgumentNullException(nameof(parseNode));
|
|
return new global::Marechai.ApiClient.Models.SoftwareVersionBySoftwareCompilationDto();
|
|
}
|
|
/// <summary>
|
|
/// The deserialization information for the current model
|
|
/// </summary>
|
|
/// <returns>A IDictionary<string, Action<IParseNode>></returns>
|
|
public virtual IDictionary<string, Action<IParseNode>> GetFieldDeserializers()
|
|
{
|
|
return new Dictionary<string, Action<IParseNode>>
|
|
{
|
|
{ "software_compilation_id", n => { SoftwareCompilationId = n.GetIntValue(); } },
|
|
{ "software_name", n => { SoftwareName = n.GetStringValue(); } },
|
|
{ "software_version", n => { SoftwareVersion = n.GetStringValue(); } },
|
|
{ "software_version_id", n => { SoftwareVersionId = n.GetIntValue(); } },
|
|
};
|
|
}
|
|
/// <summary>
|
|
/// Serializes information the current object
|
|
/// </summary>
|
|
/// <param name="writer">Serialization writer to use to serialize this model</param>
|
|
public virtual void Serialize(ISerializationWriter writer)
|
|
{
|
|
if(ReferenceEquals(writer, null)) throw new ArgumentNullException(nameof(writer));
|
|
writer.WriteIntValue("software_compilation_id", SoftwareCompilationId);
|
|
writer.WriteStringValue("software_name", SoftwareName);
|
|
writer.WriteStringValue("software_version", SoftwareVersion);
|
|
writer.WriteIntValue("software_version_id", SoftwareVersionId);
|
|
writer.WriteAdditionalData(AdditionalData);
|
|
}
|
|
}
|
|
}
|
|
#pragma warning restore CS0618
|