using AutoMapper; using LANCommander.SDK.Models.Manifest; using LANCommander.Server.ImportExport.Models; using LANCommander.Server.Services; namespace LANCommander.Server.ImportExport.Exporters; public class GameExporter( GameService gameService) : BaseExporter { public override async Task GetExportInfoAsync(Data.Models.Game record) { return new ExportItemInfo { Id = record.Id, Name = record.Title, }; } public override bool CanExport(Game record) => true; public override async Task ExportAsync(Guid id) { // Retrieve the game again, but only get the minimal amount of data required var manifest = await gameService.GetAsync(id); manifest.Actions ??= new List(); manifest.Archives ??= new List(); manifest.Collections ??= new List(); manifest.CustomFields ??= new List(); manifest.Developers ??= new List(); manifest.Genres ??= new List(); manifest.Keys ??= new List(); manifest.Media ??= new List(); manifest.MultiplayerModes ??= new List(); manifest.Platforms ??= new List(); manifest.PlaySessions ??= new List(); manifest.Publishers ??= new List(); manifest.Saves ??= new List(); manifest.SavePaths ??= new List(); manifest.Scripts ??= new List(); manifest.Tags ??= new List(); return manifest; } }