using InABox.Clients; using System; using System.Collections.Generic; using System.Text; namespace InABox.Core { public interface IConfigurationProvider where T : Entity, IRemotable, IPersistent, new() { string UserID { get; } T[] Load(Filter filter); CoreTable Query(Filter filter, Columns columns, SortOrder? sort = null); void Save(T entity); void Save(IEnumerable entities); void Delete(T entity, Action? callback = null); } public class ClientConfigurationProvider : IConfigurationProvider where T : Entity, IRemotable, IPersistent, new() { public static ClientConfigurationProvider Provider = new ClientConfigurationProvider(); public string UserID => ClientFactory.UserID; public T[] Load(Filter filter) { return Client.Query(filter, null).ToArray(); } public CoreTable Query(Filter filter, Columns columns, SortOrder? sort) { return Client.Query(filter, columns, sort); } public void Save(T entity) { Client.Save(entity, "", (o, e) => { }); } public void Save(IEnumerable entities) { Client.Save(entities, "", (o, e) => { }); } public void Delete(T entity, Action? callback = null) { if(callback != null) { Client.Delete(entity, "", (o, e) => { callback(e); }); } else { Client.Delete(entity, ""); } } } }