using SQLite; using System; using System.Collections.Generic; using System.Linq; using WowUp.WPF.Entities; using WowUp.WPF.Repositories.Base; using WowUp.WPF.Repositories.Contracts; namespace WowUp.WPF.Repositories { public class DependencyRepository : BaseEntityRepository, IDependencyRepository { public bool AddItem(AddonDependency item) { return SaveItem(item); } public bool SaveItem(AddonDependency item) { lock (_collisionLock) { _database.Insert(item); } return true; } public bool UpdateItem(AddonDependency item) { return SaveItem(item); } public bool DeleteItem(AddonDependency addon) { lock (_collisionLock) { _database.Execute("DELETE FROM AddonDependencies WHERE AddonId = ? AND DependencyId = ?", addon.AddonId, addon.DependencyId); } return true; } public bool DeleteItems(IEnumerable addons) { lock (_collisionLock) { foreach (var addon in addons) { DeleteItem(addon); } } return true; } public IEnumerable Query(Func, TableQuery> action) { lock (_collisionLock) { var query = action.Invoke(_database.Table()); return query.AsEnumerable(); } } public AddonDependency Query(Func, AddonDependency> action) { lock (_collisionLock) { return action.Invoke(_database.Table()); } } public IEnumerable GetAddonDependencies(Addon addon) { return Query(dependencies => dependencies.Where(ad => ad.AddonId == addon.Id)); } public IEnumerable GetDependentAddons(Addon addon) { return Query(dependencies => dependencies.Where(ad => ad.DependencyId == addon.Id)); } public bool AddItems(IEnumerable items) { return SaveItems(items); } public bool SaveItems(IEnumerable items) { lock (_collisionLock) { foreach (var item in items) { _database.Insert(item); } } return true; } public bool RemoveAll() { lock (_collisionLock) { _database.Execute("DELETE FROM AddonDependencies"); } return true; } } }