internal static async Task <CockatriceCardDatabase> CreateFromDatabase(IAsyncEnumerable <WeissSchwarzCard> query)
    {
        var result       = new CockatriceCardDatabase();
        var tempSetList  = new Dictionary <string, CockatriceSet>();
        var tempCardList = new List <CockatriceCard>();

        await foreach (var card in query)
        {
            try
            {
                var newCckCard = new CockatriceCard();
                newCckCard.Name            = card.Name.AsNonEmptyString();
                newCckCard.Set             = GetOrCreateSet(tempSetList, card).AsSetRelationship();
                newCckCard.Set.PicURL      = card.Images[^ 1].ToString();
    public async Task Export(CardDatabaseContext database, IDatabaseExportInfo info)
    {
        Log.Information("Starting...");
        var query      = CreateQuery(database.WeissSchwarzCards, info);
        var resultFile = Path.CreateDirectory(info.Destination).Combine("cockatrice_card_db.xml");
        var serializer = new XmlSerializer(typeof(CockatriceCardDatabase));
        var cardSet    = await CockatriceCardDatabase.CreateFromDatabase(query);

        resultFile.Open(s => serializer.Serialize(s, cardSet),
                        System.IO.FileMode.Create,
                        System.IO.FileAccess.Write,
                        System.IO.FileShare.ReadWrite
                        );
        Log.Information($"Done: {resultFile.FullPath}");
    }