using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Reflection; using Eloquera.Client; namespace NzbDrone.Core.Datastore { public class EloqueraDb : IDisposable { private readonly IdService _idService; public DB Db { get; private set; } public EloqueraDb(DB db, IdService idService) { _idService = idService; Db = db; } public IEnumerable AsQueryable() { return Db.Query(); } public T Insert(T obj) where T : BaseRepositoryModel { _idService.EnsureIds(obj, new HashSet()); Db.Store(obj); return obj; } public IList InsertMany(IList objects) where T : BaseRepositoryModel { _idService.EnsureIds(objects, new HashSet()); return DoMany(objects, Insert); } public T Update(T obj) { Db.Store(obj); return obj; } public IList UpdateMany(IList objects) { _idService.EnsureIds(objects, new HashSet()); return DoMany(objects, Update); } public void Delete(T obj) where T : new() { Db.Delete(obj); } public void DeleteMany(IEnumerable objects) where T : new() { foreach (var o in objects) { Delete(o); } } private IList DoMany(IEnumerable objects, Func function) { return objects.Select(function).ToList(); } public void Dispose() { Db.Dispose(); } } }