public static VariableData Get(DataManagement.Configuration config, string variableName, string tablePrefix = "")
        {
            VariableData Result = null;

            DataRow row = Row.Get(config, tablePrefix + Names.Variables, "variable", variableName);

            if (row != null)
            {
                Result = new VariableData();

                if (row["variable"] != null)
                {
                    Result.Variable = row["variable"].ToString();
                }
                if (row["value"] != null)
                {
                    Result.Value = row["value"].ToString();
                }
                if (row["timestamp"] != null)
                {
                    DateTime timestamp = DateTime.MinValue;
                    DateTime.TryParse(row["timestamp"].ToString(), out timestamp);
                    if (timestamp > DateTime.MinValue)
                    {
                        Result.Timestamp = timestamp;
                    }
                }
            }

            return(Result);
        }
        public static void CreateTable(DataManagement.Configuration config, string tablePrefix = "")
        {
            var columns = new ColumnDefinition[]
            {
                new ColumnDefinition("Variable", DataType.LargeText),
                new ColumnDefinition("Value", DataType.LargeText),
                new ColumnDefinition("Timestamp", DataType.DateTime)
            };

            Table.Create(config, tablePrefix + Names.Variables, columns, primaryKey);
        }
        public static void Update(DataManagement.Configuration config, VariableData[] infos, string tablePrefix = "")
        {
            if (infos.Length > 0)
            {
                List <string> columns = new List <string>();
                columns.Add("Variable");
                columns.Add("Value");
                columns.Add("Timestamp");

                var tableValues = new List <List <object> >();

                foreach (var info in infos)
                {
                    var match = Data.Find(x => x.Variable == info.Variable && x.UniqueId == info.UniqueId);
                    if (match == null)
                    {
                        Data.Add(info);
                        match = info;
                    }

                    if (match.Value != info.Value)
                    {
                        match.Value = info.Value;

                        var rowValues = new List <object>();
                        rowValues.Add(info.Variable);
                        rowValues.Add(info.Value);
                        rowValues.Add(info.Timestamp);
                        tableValues.Add(rowValues);
                    }
                }

                if (tableValues.Count > 0)
                {
                    string query = Row.CreateInsertQuery(tablePrefix + Names.Variables, columns.ToArray(), tableValues, true);
                    //TrakHound.Servers.Processor.Server.DatabaseQueue.AddToQueue(query);
                }
            }
        }