Exemple #1
0
        public static async Task <List <MediaMetadata> > GetAllMetadatasAsync(this MediaMetaDatabaseContext context)
        {
            List <MediaMetaJson> metaJsons = null;

            using (new DisposableLogger(
                       DatabaseLog.QueryBegin,
                       (sw) => DatabaseLog.QueryEnd(sw, metaJsons?.Count ?? 0)
                       ))
            {
                // Get all MediaMetaJsons from database using this LINQ query.
                metaJsons = await context.MediaMetaJsons
                            .Include(j => j.Labels)
                            .ToListAsync();
            }

            var metas = new List <MediaMetadata>();

            using (new DisposableLogger(
                       DatabaseLog.DeserializationBegin,
                       (sw) => DatabaseLog.DeserializationEnd(sw, metas?.Count ?? 0)
                       ))
            {
                // Deserialize the JSON data in each MediaMetaJson object into a MediaMetadata object and add it to metas.
                foreach (var metaJson in metaJsons)
                {
                    var meta = await Task.Run(() => JsonConvert.DeserializeObject <MediaMetadata>(metaJson.Json));

                    meta.Labels = new ObservableCollection <Label>(metaJson.Labels);
                    metas.Add(meta);
                }
            }

            return(metas);
        }