private void UpdateNode(NpgsqlConnection serverConnection, ScienceBaseNode data) { var ServerCommand = serverConnection.CreateCommand(); using (ServerCommand) { var CommandText = string.Empty; if (data.RdbRowId < 0) { CommandText = "insert into sciencebase (srcid, groupid, title, relation, haschildren, url, summary) values (@srcid, @groupid, @title, @relation, @haschildren, @url, @summary)"; } else { CommandText = "update sciencebase set @srcid, @groupid, @title, @relation, @haschildren, @url, @summary where id = @id"; var CurrentParameter = new NpgsqlParameter(); CurrentParameter.ParameterName = "@id"; CurrentParameter.Value = data.RdbRowId; CurrentParameter.NpgsqlDbType = NpgsqlDbType.Bigint; CurrentParameter.IsNullable = false; ServerCommand.Parameters.Add(CurrentParameter); } ServerCommand.CommandText = CommandText; AddParameters(ServerCommand, data); ServerCommand.ExecuteNonQuery(); } return; }
public List <ScienceBaseNode> GetNodes() { var DataNodes = new List <ScienceBaseNode>(); using (var ServerConnection = CreateConnection()) { ServerConnection.Open(); var ServerCommand = ServerConnection.CreateCommand(); using (ServerCommand) { ServerCommand.CommandText = "select * from sciencebase order by groupid, title, url"; var RowReader = ServerCommand.ExecuteReader(); using (RowReader) { while (RowReader.Read()) { var CurrentNode = new ScienceBaseNode(0); CurrentNode.Read(RowReader); DataNodes.Add(CurrentNode); } } } } return(DataNodes); }
private static ScienceBaseNode CreateDataNode(List <ScienceBaseNode> dataNodes, int grpId) { var DataNode = new ScienceBaseNode(grpId); dataNodes.Add(DataNode); return(DataNode); }
private void AddParameters(NpgsqlCommand serverCommand, ScienceBaseNode data) { var CurrentParameter = new NpgsqlParameter(); CurrentParameter.ParameterName = "@srcid"; CurrentParameter.Value = data.Id; CurrentParameter.NpgsqlDbType = NpgsqlDbType.Varchar; CurrentParameter.Size = 32; CurrentParameter.IsNullable = true; serverCommand.Parameters.Add(CurrentParameter); CurrentParameter = new NpgsqlParameter(); CurrentParameter.ParameterName = "@groupid"; CurrentParameter.Value = data.GroupId; CurrentParameter.NpgsqlDbType = NpgsqlDbType.Integer; CurrentParameter.IsNullable = false; serverCommand.Parameters.Add(CurrentParameter); CurrentParameter = new NpgsqlParameter(); CurrentParameter.ParameterName = "@title"; CurrentParameter.Value = data.Title; CurrentParameter.NpgsqlDbType = NpgsqlDbType.Varchar; CurrentParameter.Size = 128; CurrentParameter.IsNullable = true; serverCommand.Parameters.Add(CurrentParameter); CurrentParameter = new NpgsqlParameter(); CurrentParameter.ParameterName = "@relation"; CurrentParameter.Value = data.Rel; CurrentParameter.NpgsqlDbType = NpgsqlDbType.Varchar; CurrentParameter.Size = 12; CurrentParameter.IsNullable = true; serverCommand.Parameters.Add(CurrentParameter); CurrentParameter = new NpgsqlParameter(); CurrentParameter.ParameterName = "@haschildren"; CurrentParameter.Value = data.HasChildren; CurrentParameter.NpgsqlDbType = NpgsqlDbType.Boolean; CurrentParameter.IsNullable = false; serverCommand.Parameters.Add(CurrentParameter); CurrentParameter = new NpgsqlParameter(); CurrentParameter.ParameterName = "@url"; CurrentParameter.Value = data.Url; CurrentParameter.NpgsqlDbType = NpgsqlDbType.Text; CurrentParameter.IsNullable = true; serverCommand.Parameters.Add(CurrentParameter); CurrentParameter = new NpgsqlParameter(); CurrentParameter.ParameterName = "@summary"; CurrentParameter.Value = data.Summary; CurrentParameter.NpgsqlDbType = NpgsqlDbType.Text; CurrentParameter.IsNullable = true; serverCommand.Parameters.Add(CurrentParameter); return; }
private void ExtractJSONStreamValues(List <ScienceBaseNode> dataNodes, Dictionary <string, object> values, ScienceBaseNode dataNode, int depth) { foreach (var Item in values) { if (Item.Value is Dictionary <string, object> ) { var NewDepth = (1 + depth); ExtractJSONStreamValues(dataNodes, Item.Value as Dictionary <string, object>, CreateDataNode(dataNodes, NewDepth), NewDepth); } else if (Item.Value is object[]) { ExtractJSONStreamValues(dataNodes, Item.Value as object[], depth); } else { dataNode.Read(depth, Item); } } return; }