public static async Task <Node> Compile(Models.NodeDescriptor desc, Services.DataSourceService data, Services.ResourceCache resCache) { if (desc.Child != null && desc.Children != null) { throw new ArgumentException("Set either the 'Child' or 'Children' argument, not both."); } if (desc.Type == "data") { if (desc.Dataset == null) { throw new ArgumentException("Missing 'Dataset' property"); } return(await data.GetSource(desc.Dataset.Source).GetNode(desc.Dataset.Id, desc.Dataset.Variant, resCache)); } else { if (desc.Child == null && desc.Children == null) { throw new ArgumentException("A pipe must have either the 'Child' or the 'Children' argument."); } if (desc.Children != null) { return(Pipe.CompilePipe( desc.Type, await Task.WhenAll(desc.Children.Select(c => Compile(c, data, resCache))), desc.Options )); } else { return(Pipe.CompilePipe( desc.Type, await Compile(desc.Child, data, resCache), desc.Options )); } } }
public DataController(ILogger <DataController> logger, Services.DataSourceService dataSources, Services.ResourceCache resCache) { _Logger = logger; _DataSources = dataSources; _ResCache = resCache; }
public abstract Task <Node> GetNode(string id, string variant, Services.ResourceCache resCache);
public override Task <Node> GetNode(string id, string variant, Services.ResourceCache resCache) { var dataset = _Datasets.Find(d => d.Id == id); return(Task.FromResult <Node>(new HPDataNode(this, dataset, variant, resCache))); }