public XElement Run(IMetabase metabase) { var query = Plan.ToQuery(); Console.WriteLine(query); // For debugging purposes return(metabase.Query <string>(query).AsXElement()); }
public void Update(IMetabase metabase, PlanFile plans) { var updateContext = new UpdateContext {Instructions = this, Metabase = metabase}; var plan = plans.Plan(ExtractName); ExtractName = plan.Name; Plan = plan.GetPlan(updateContext); }
public void Process(XElement parent, IMetabase metabase, IDictionary <string, object> parentValues) { foreach (var element in GetElements(parent)) { var values = GetValues(element); UpdateFromParentValues(values, parentValues); foreach (var lookup in Children.OfType <LookupPart>()) { lookup.Process(element, metabase, values); } foreach (var hasOne in Children.OfType <HasOnePart>()) { hasOne.Process(element, metabase, values); } var key = PushSelf(metabase, values); foreach (var hasMany in Children.OfType <HasManyPart>()) { hasMany.Process(element, metabase, values); } UpdateParentValues(parentValues, key); } }
protected virtual object PushSelf(IMetabase metabase, IDictionary <string, object> values) { var key = metabase.Insert(Table.Name, values); values[Table.PrimaryKey.Name] = key; return(key); }
public void Insert(IMetabase metabase, XElement extract) { var extractElement = extract.Element(ExtractName); if (extractElement != null) { Plan.Process(extractElement, metabase, null); } }
public void Update(IMetabase metabase, PlanFile plans) { var updateContext = new UpdateContext { Instructions = this, Metabase = metabase }; var plan = plans.Plan(ExtractName); ExtractName = plan.Name; Plan = plan.GetPlan(updateContext); }
public void Process(XElement parent, IMetabase metabase, IDictionary<string, object> parentValues) { foreach(var element in GetElements(parent)) { var values = GetValues(element); UpdateFromParentValues(values, parentValues); foreach (var lookup in Children.OfType<LookupPart>()) lookup.Process(element, metabase, values); foreach (var hasOne in Children.OfType<HasOnePart>()) hasOne.Process(element, metabase, values); var key = PushSelf(metabase, values); foreach (var hasMany in Children.OfType<HasManyPart>()) hasMany.Process(element, metabase, values); UpdateParentValues(parentValues, key); } }
protected override object PushSelf(IMetabase metabase, IDictionary<string, object> values) { if (values.Any() == false) return null; var value = metabase.Lookup(Table.Name, values); values[Table.PrimaryKey.Name] = value; //Console.WriteLine("Looked up: {0}", value); return value; }
protected virtual object PushSelf(IMetabase metabase, IDictionary<string, object> values) { var key = metabase.Insert(Table.Name, values); values[Table.PrimaryKey.Name] = key; return key; }
public XElement Run(IMetabase metabase) { var query = Plan.ToQuery(); Console.WriteLine(query); // For debugging purposes return metabase.Query<string>(query).AsXElement(); }
public void Insert(IMetabase metabase, XElement extract) { var extractElement = extract.Element(ExtractName); if (extractElement != null) Plan.Process(extractElement, metabase, null); }