async static void GetData() { ISchemaContext ctx = new SchemaDb(); dynamic contacts2 = new ExpandoObject(); (contacts2 as IDictionary<string, object>).Add("Usia", 39); contacts2.Name = "Asep XX"; contacts2.Phone = "206-555-0155"; contacts2.House = new List<dynamic>(); contacts2.House.Add(new ExpandoObject()); contacts2.House[0].Address = "Jln. Klumet"; contacts2.House[0].POBox = "23456"; contacts2._id = 1; IDataContext dtx = new InMemoryDb("lake",ctx); dtx.InsertData(contacts2, "contacts"); //dtx.InsertData(contacts2, "contacts"); var datas = await dtx.GetAllData("contacts"); //var datas = await dtx.GetDataByStartId(2,1,"contacts"); foreach (dynamic item in datas) { Console.WriteLine($"{item.House[0].Address}"); //Console.WriteLine(SchemaConverter.AreExpandoStructureEquals(item, contacts2)); //(item as IDictionary<string, object>)["Usia"]= 31; //dtx.UpdateData(item, "contacts"); } }
public async Task<OutputCls> ExportData(long SchemaId,string UserName,string Tipe) { SetDatabaseName(); OutputCls output = new OutputCls() { Result = false, Comment = "export data error." }; try { string SchemaName = string.Empty; SchemaTypes SchemaType = SchemaTypes.StreamData; ISchemaContext ctx = new SchemaDb(); var data = from c in ctx.GetAllData<SchemaEntity>() where c.Id == SchemaId select c; foreach (var item in data) { SchemaName = item.SchemaName; SchemaType = item.SchemaType; } IDataContext dtx = null; dtx = GetDB(SchemaType); string PathToFile = string.Format(string.Format("{0}/{1}/{2}", DownloadPath, UserName, SchemaName)); if (!Directory.Exists(PathToFile)) Directory.CreateDirectory(PathToFile); var temp = await dtx.GetAllData(SchemaName); var FileName = string.Empty; switch (Tipe) { case "csv": string csvstr = SchemaConverter.ExpandoToCsv(temp); FileName = SchemaName + DateTime.Now.ToString("_yyyyMMdd_HHmm") + ".csv"; File.WriteAllText(string.Format("{0}/{1}", PathToFile, FileName), csvstr); break; case "json": string jsonstr = JsonConvert.SerializeObject(temp); FileName = SchemaName + DateTime.Now.ToString("_yyyyMMdd_HHmm") + ".json"; File.WriteAllText(string.Format("{0}/{1}", PathToFile, FileName), jsonstr); break; case "xml": XElement el = SchemaConverter.ExpandoToXML(temp, SchemaName); FileName = SchemaName + DateTime.Now.ToString("_yyyyMMdd_HHmm") + ".xml"; File.WriteAllText(string.Format("{0}/{1}", PathToFile, FileName), el.ToString()); break; } output.Params = new List<dynamic>(); output.Params.Add(string.Format("/downloads/{0}/{1}/{2}", UserName, SchemaName, FileName)); output.Result = true; output.Comment = "ok"; return output; } catch (Exception ex) { output.Comment = ex.Message; return output; } }
public OutputCls DesignSchema(dynamic Entity,List<dynamic> Rows) { ISchemaContext ctx = new SchemaDb(); var Fields = new List<IDField>(); OutputCls res = new OutputCls() { Result = false, Comment = "Schema invalid." }; foreach(dynamic item in Rows) { var Field = new IDField(); Field.Name = item.field_name; Field.IsMandatory = (bool)item.field_mandatory; Field.FieldType = FieldTypes.SingleField; switch ((string)item.field_type) { case "string": Field.NativeType = typeof(string); break; case "integer": Field.NativeType = typeof(Int64); break; case "double": Field.NativeType = typeof(double); break; case "datetime": Field.NativeType = typeof(DateTime); break; case "boolean": Field.NativeType = typeof(bool); break; case "character": Field.NativeType = typeof(char); break; default: Field.NativeType = typeof(string); break; } Field.RegexValidation = item.field_regex; Field.Desc = item.field_description; Fields.Add(Field); } string SchemaName = Entity.SchemaName; SchemaEntity newEntity = SchemaConverter.DesignToSchema(Fields, SchemaName); newEntity.GroupName = Entity.GroupName; newEntity.SchemaType = (SchemaTypes)Entity.SchemaType; newEntity.Description = Entity.Description; newEntity.AccessType = (AccessTypes)Entity.AccessType; newEntity.CreatedBy = Entity.UserName; newEntity.Id = ctx.GetSequence<SchemaEntity>(); ctx.InsertData<SchemaEntity>(newEntity); res.Result = true; res.Comment = "ok"; //khusus columnar (casandra) if ((SchemaTypes)Entity.SchemaType == SchemaTypes.HistoricalData) { SetDatabaseName(); var dx = container.Get<ColumnarDb>(); dx.SetupKeyspaceAndTable(SchemaName, newEntity.Fields); } return res; }
static void Main(string[] args) { ISchemaContext ctx = new SchemaDb(); dynamic contacts = new System.Dynamic.ExpandoObject(); (contacts as IDictionary<string, object>).Add("Usia", 40); contacts.Name = "Patrick Hines"; contacts.Phone = "206-555-0144"; (contacts as IDictionary<string, object>).Add("House", new List<dynamic>()); contacts.House.Add(new System.Dynamic.ExpandoObject()); contacts.House[0].Address = "Jln. Klumeten"; contacts.House[0].POBox = "7658"; dynamic contacts2 = new ExpandoObject(); (contacts2 as IDictionary<string, object>).Add("Usia", 39); contacts2.Name = "Ellen Adams"; contacts2.Phone = "206-555-0155"; contacts2.House = new List<dynamic>(); contacts2.House.Add(new ExpandoObject()); contacts2.House[0].Address = "Jln. Klumet"; contacts2.House[0].POBox = "23456"; Console.WriteLine(SchemaConverter.AreExpandoStructureEquals(contacts, contacts2)); //GetData(); //dtx.InsertData<dynamic>(contacts, "contacts"); SchemaEntity item = SchemaConverter.ExpandoToSchema(contacts, nameof(contacts)); item.Id = ctx.GetSequence<SchemaEntity>(); ctx.InsertData<SchemaEntity>(item); /* var data = ctx.GetAllData<SchemaEntity>(); foreach(var item in data) { dynamic obj = SchemaConverter.JsonToExpando(item.JsonStructure); if (obj is ExpandoObject) { foreach (var property in (IDictionary<String, Object>)obj) { if (property.Value is ExpandoObject) { //do nothing } else if (property.Value is List<dynamic>) { foreach (var element in (List<dynamic>)property.Value) { if (element is ExpandoObject) { foreach (var pr in (IDictionary<String, Object>)element) { Console.WriteLine($"{pr.Key} as {pr.Value.GetType().ToString()} = {pr.Value}"); } } } } else { Console.WriteLine($"{property.Key} as {property.Value.GetType().ToString()} = {property.Value}"); } } } }*/ Console.ReadLine(); }