コード例 #1
0
        public Result <ItemTag> Update(ItemTag itemTag)
        {
            try
            {
                var sqliteConnection = new SQLiteConnection(_configurationAccessor.GetDatabaseConnectionString());
                using (var model = new EntityFramework.Model(sqliteConnection))
                {
                    var existing = model.ItemTags.FirstOrDefault(it => it.Id == itemTag.Id);
                    if (existing == null)
                    {
                        return(Result.Fail <ItemTag>("Item tag " + itemTag.Name + " was not found"));
                    }

                    existing.Name        = itemTag.Name;
                    existing.Description = itemTag.Description;

                    model.SaveChanges();
                    return(Result.Ok(itemTag));
                }
            }
            catch (Exception ex)
            {
                return(Result.Fail <ItemTag>(ex.InnerException?.Message ?? ex.Message));
            }
        }
コード例 #2
0
        public Result <MediaContainer> Update(MediaContainer item)
        {
            try
            {
                var sqliteConnection = new SQLiteConnection(_configurationAccessor.GetDatabaseConnectionString());
                using (var model = new EntityFramework.Model(sqliteConnection))
                {
                    var existing = model.MediaContainers.SingleOrDefault(i => i.Id == item.Id);
                    if (existing == null)
                    {
                        return(Result.Fail <MediaContainer>("No media container with id " + item.Id.ToString() + " was found."));
                    }
                    existing.Name          = item.Name;
                    existing.GenreId       = item.GenreId;
                    existing.IsEnabled     = item.IsEnabled;
                    existing.Path          = item.Path;
                    existing.UseSubFolders = item.UseSubFolders;
                    existing.SourceId      = item.SourceId;
                    existing.MediaTypeId   = item.MediaTypeId;

                    model.SaveChanges();
                    return(Result.Ok(item));
                }
            }
            catch (Exception ex)
            {
                return(Result.Fail <MediaContainer>(ex.InnerException?.Message ?? ex.Message));
            }
        }
コード例 #3
0
        public Result SetTagsForImage(int imageId, IEnumerable <int> tags)
        {
            try
            {
                var sqliteConnection = new SQLiteConnection(_configurationAccessor.GetDatabaseConnectionString());
                using (var model = new EntityFramework.Model(sqliteConnection))
                {
                    var tagMaps = model.ImageTagMaps.Where(itm => itm.ImageId == imageId);
                    model.ImageTagMaps.RemoveRange(tagMaps);

                    var newTagMaps = tags.Select(tid => new ImageTagMap
                    {
                        ImageId   = imageId,
                        ItemTagId = (ItemTagId)tid,
                    });

                    model.ImageTagMaps.AddRange(newTagMaps);
                    model.SaveChanges();
                }
                return(Result.Ok());
            }
            catch (Exception ex)
            {
                return(Result.Fail(ex.InnerException?.Message ?? ex.Message));
            }
        }
コード例 #4
0
        public List <ItemTag> Get()
        {
            var sqliteConnection = new SQLiteConnection(_configurationAccessor.GetDatabaseConnectionString());

            using (var model = new EntityFramework.Model(sqliteConnection))
            {
                return(model.ItemTags.ToList());
            }
        }
コード例 #5
0
        public List <ImageTagMap> GetTagMapsForImage(int imageId)
        {
            var sqliteConnection = new SQLiteConnection(_configurationAccessor.GetDatabaseConnectionString());

            using (var model = new EntityFramework.Model(sqliteConnection))
            {
                return(model.ImageTagMaps.Where(itm => itm.ImageId == imageId).ToList());
            }
        }
コード例 #6
0
        public Result <Genre> Get(int id)
        {
            var sqliteConnection = new SQLiteConnection(_configurationAccessor.GetDatabaseConnectionString());

            using (var model = new EntityFramework.Model(sqliteConnection))
            {
                return(Result.Ok(model.Genres.SingleOrDefault(i => i.Id == id))
                       .Ensure(i => i != null, "No genre with id " + id.ToString() + " was found."));
            }
        }
コード例 #7
0
        public List <string> Get()
        {
            var sqliteConnection = new SQLiteConnection(_configurationAccessor.GetDatabaseConnectionString());

            using (var model = new EntityFramework.Model(sqliteConnection))
            {
                var localMediaContainers = model.MediaContainers.Where(mc => mc.SourceId == ImageSource.Local && mc.IsEnabled).Select(mc => mc.Id).ToList();
                var imageFiles           = model.ImageMetaDatas.Where(imd => localMediaContainers.Contains(imd.MediaContainerId)).Select(imd => imd.FullFileName).ToList();
                return(imageFiles.Select(i => System.IO.Path.GetDirectoryName(i)).ToList());
            }
        }
コード例 #8
0
        public List <ImageMetaData> Get(ImageSource?source, ImageGenre?genre)
        {
            var sqliteConnection = new SQLiteConnection(_configurationAccessor.GetDatabaseConnectionString());

            using (var model = new EntityFramework.Model(sqliteConnection))
            {
                var allImages = model.ImageMetaDatas.ToList();
                return(model.ImageMetaDatas
                       .Where(imd => (!source.HasValue || imd.SourceId == source.Value) && (!genre.HasValue || imd.GenreId == genre.Value))
                       .ToList());
            }
        }
コード例 #9
0
        public List <ImageMetaData> GetImagesWithTag(ItemTagId itemTagId)
        {
            var sqliteConnection = new SQLiteConnection(_configurationAccessor.GetDatabaseConnectionString());

            using (var model = new EntityFramework.Model(sqliteConnection))
            {
                return((from imd in model.ImageMetaDatas
                        join itm in model.ImageTagMaps on imd.Id equals itm.ImageId
                        where itm.ItemTagId == itemTagId
                        select imd).ToList());
            }
        }
コード例 #10
0
        public Result <ItemTag> Get(int tagId)
        {
            var sqliteConnection = new SQLiteConnection(_configurationAccessor.GetDatabaseConnectionString());

            using (var model = new EntityFramework.Model(sqliteConnection))
            {
                var data = model.ItemTags.Where(it => it.Id == tagId).ToList();
                if (data.Any())
                {
                    return(Result.Ok(data.First()));
                }
                return(Result.Fail <ItemTag>("No tag found with Id of " + tagId.ToString()));
            }
        }
コード例 #11
0
        public List <ItemTag> GetTagsForImage(int imageId)
        {
            var sqliteConnection = new SQLiteConnection(_configurationAccessor.GetDatabaseConnectionString());

            using (var model = new EntityFramework.Model(sqliteConnection))
            {
                var tags = model.ImageTagMaps
                           .Where(itm => itm.ImageId == imageId)
                           .Select(itm => itm.ItemTagId)
                           .ToList();

                return(model.ItemTags
                       .Where(it => tags.Contains((ItemTagId)it.Id))
                       .ToList());
            }
        }
コード例 #12
0
 public Result <ItemTag> Create(ItemTag itemTag)
 {
     try
     {
         var sqliteConnection = new SQLiteConnection(_configurationAccessor.GetDatabaseConnectionString());
         using (var model = new EntityFramework.Model(sqliteConnection))
         {
             model.ItemTags.Add(itemTag);
             model.SaveChanges();
             return(Result.Ok(itemTag));
         }
     }
     catch (Exception ex)
     {
         return(Result.Fail <ItemTag>(ex.InnerException?.Message ?? ex.Message));
     }
 }
コード例 #13
0
 public Result Create(IEnumerable <ImageMetaData> images)
 {
     try
     {
         var sqliteConnection = new SQLiteConnection(_configurationAccessor.GetDatabaseConnectionString());
         using (var model = new EntityFramework.Model(sqliteConnection))
         {
             model.ImageMetaDatas.AddRange(images);
             model.SaveChanges();
         }
         return(Result.Ok());
     }
     catch (Exception ex)
     {
         return(Result.Fail(ex.InnerException?.Message ?? ex.Message));
     }
 }
コード例 #14
0
 public Result Delete(ImageTagMap item)
 {
     try
     {
         var sqliteConnection = new SQLiteConnection(_configurationAccessor.GetDatabaseConnectionString());
         using (var model = new EntityFramework.Model(sqliteConnection))
         {
             model.ImageTagMaps.Attach(item);
             model.ImageTagMaps.Remove(item);
             model.SaveChanges();
             return(Result.Ok());
         }
     }
     catch (Exception ex)
     {
         return(Result.Fail(ex.InnerException?.Message ?? ex.Message));
     }
 }
コード例 #15
0
 public Result <Genre> Update(Genre item)
 {
     try
     {
         var sqliteConnection = new SQLiteConnection(_configurationAccessor.GetDatabaseConnectionString());
         using (var model = new EntityFramework.Model(sqliteConnection))
         {
             var existing = model.Genres.SingleOrDefault(i => i.Id == item.Id);
             if (existing == null)
             {
                 return(Result.Fail <Genre>("No genre with id " + item.Id.ToString() + " was found."));
             }
             existing.Name = item.Name;
             model.SaveChanges();
             return(Result.Ok(item));
         }
     }
     catch (Exception ex)
     {
         return(Result.Fail <Genre>(ex.InnerException?.Message ?? ex.Message));
     }
 }
コード例 #16
0
 public Result Update(IEnumerable <ImageMetaData> images)
 {
     try
     {
         var sqliteConnection = new SQLiteConnection(_configurationAccessor.GetDatabaseConnectionString());
         using (var model = new EntityFramework.Model(sqliteConnection))
         {
             foreach (var img in images)
             {
                 var existing = model.ImageMetaDatas.Single(imd => imd.Id == img.Id);
                 existing.FullFileName = img.FullFileName;
                 existing.GenreId      = img.GenreId;
                 existing.SourceId     = img.SourceId;
                 existing.ItemName     = img.ItemName;
             }
             model.SaveChanges();
         }
         return(Result.Ok());
     }
     catch (Exception ex)
     {
         return(Result.Fail(ex.InnerException?.Message ?? ex.Message));
     }
 }