using System.Collections.Generic; using System.Linq; namespace NzbDrone.Core.Datastore { public interface IBasicRepository { List All(); TModel Get(int rootFolderId); TModel Add(TModel rootFolder); void Delete(int rootFolderId); } public class BasicRepository : IBasicRepository where TModel : BaseRepositoryModel, new() { public BasicRepository(IObjectDatabase objectDatabase) { ObjectDatabase = objectDatabase; } protected IObjectDatabase ObjectDatabase { get; private set; } public List All() { return ObjectDatabase.AsQueryable().ToList(); } public TModel Get(int id) { return ObjectDatabase.AsQueryable().Single(c => c.OID == id); } public TModel Add(TModel model) { return ObjectDatabase.Insert(model); } public void Delete(int id) { var itemToDelete = Get(id); ObjectDatabase.Delete(itemToDelete); } } }