Commit Graph

2 Commits

Author SHA1 Message Date
4232de3546 Add software compilation merge to Blazor and Uno admin apps
Lets admins merge duplicate SoftwareCompilation entries: a new
POST /software-compilations/{id}/merge endpoint re-parents releases,
covers, junction rows (with dedup/self-loop guards), and predecessor
references onto the target before deleting the sources. Wired into
both the Blazor MudBlazor admin page and the Uno admin page, each
with a search-based target/source picker, plus full localization.
2026-06-29 12:37:02 +01:00
effa7b6791 feat: Complete software compilation refactor across client, UI, and importer
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.
2026-06-26 04:54:35 +01:00