/// <summary> /// /// </summary> /// <param name="ds"></param> /// <returns></returns> public OperationResult <ModelDataSource> Create(ModelDataSource ds) { OperationResult <ModelDataSource> res; try { if (ds.IsDefault) { ResetIsDefault(); } var entity = ds .ToEntity() .IncludeActiveOrgId(DataContext); DataContext.DataSources.Add(entity); DataContext.SaveChanges(); var model = entity .UpdateId(ds) .ToModel(); res = OperationResult <ModelDataSource> .Create(model); } catch (Exception e) { res = OperationResult <ModelDataSource> .Create(ErrorCode.BadCreateDataSource, e); } return(res); }
/// <summary> /// /// </summary> private string CompileQuery(EvaluationContext context, ModelDataSource ds) { var query = ds .QueryBuilder .ParseSingle(JObject.Parse(Query.Body)); var textQuery = query.Compile(Query.Range); var(From, To) = Query.RangeAsEpoch; context.Log($"Condition [{Index}]: Query", new { From, To, Query = new { DataSource = new { ds.Id, ds.Name }, query.RefId, Model = query, Text = textQuery } }); return(textQuery); }
/// <summary> /// /// </summary> /// <param name="ds"></param> /// <returns></returns> public ModelDataSource ToModel() { ModelDataSource ds = null; try { var target = typeof(ModelDataSource) .Assembly .FindTypesWithCustomAttribute <DataSourceTypeAttribute>() .FirstOrDefault(x => x.Item2.Type == Type); if (null == target) { return(ds); // check for plugins in neighbour dll's: todo } var type = target.Item1; ds = JsonConvert.DeserializeObject(JsonData, type) as ModelDataSource; if (null == ds) { return(ds); } ds.Id = Id; ds.IsDefault = IsDefault; ds.Name = Name; ds.OrgId = OrgId; ds.Url = Url; } catch { } return(ds); }
/// <summary> /// /// </summary> /// <param name="ds"></param> /// <returns></returns> public static ModelDataSource IncludePluginInfo(this ModelDataSource m, PluginManager pm) { var plugin = pm?[m.Type]; if (null != plugin) { m.TypeLogoUrl = $"{m.Type}/{plugin.Info.Logos.Large}"; } return(m); }
/// <summary> /// /// </summary> public void Update(ModelDataSource ds) { Name = ds.Name; Url = ds.Url; IsDefault = ds.IsDefault; JsonData = JsonConvert.SerializeObject(ds, new JsonSerializerSettings() { ContractResolver = new DataSourcePropertiesJsonResolver(true) }); }
/// <summary> /// /// </summary> /// <param name="ds"></param> /// <returns></returns> public static DataSource ToEntity(this ModelDataSource ds) { var entity = new EntityDataSource() { Id = ds.Id, OrgId = ds.OrgId, IsDefault = ds.IsDefault, Name = ds.Name, Type = ds.Type.ToString(), Url = ds.Url }; entity.JsonData = JsonConvert.SerializeObject(ds, new JsonSerializerSettings() { ContractResolver = new DataSourcePropertiesJsonResolver(true) }); return(entity); }
/// <summary> /// /// </summary> /// <param name="ds"></param> /// <returns></returns> public OperationResult <ModelDataSource> Update(ModelDataSource ds) { OperationResult <ModelDataSource> res; try { if (ds.IsDefault) { ResetIsDefault(); } var entity = DataContext .DataSources .ForActiveOrg() .FirstOrDefault(x => x.Id == ds.Id); if (null == entity) { return(OperationResult <ModelDataSource> .Create(ErrorCode.BadGetDataSource)); } entity.Update(ds); DataContext.DataSources.Update(entity); DataContext.SaveChanges(); var model = entity .UpdateId(ds) .ToModel(); res = OperationResult <ModelDataSource> .Create(model); } catch (Exception e) { res = OperationResult <ModelDataSource> .Create(ErrorCode.BadUpdateDataSource, e); } return(res); }