コード例 #1
0
        public override async Task Run()
        {
            var findObjectHelper = new FindObjectHelper();
            var columnTypes      = await findObjectHelper.ExtractColumnTypes(HubCommunicator, ActivityContext);

            if (columnTypes == null)
            {
                RaiseError("No column types crate found.");
                return;
            }

            var queryPayloadValue = ExtractSqlQuery();

            if (queryPayloadValue == null)
            {
                RaiseError("No Sql Query payload crate found.");
                return;
            }

            var connectionString = await ExtractConnectionString();

            var query = BuildQuery(connectionString, queryPayloadValue, columnTypes);

            var dbProvider     = DbProvider.GetDbProvider(DefaultDbProvider);
            var data           = dbProvider.ExecuteQuery(query);
            var payloadCM      = BuildStandardPayloadData(data, columnTypes);
            var payloadCMCrate = Crate.FromContent("Sql Query Result", payloadCM);

            Payload.Add(payloadCMCrate);
            Success();
        }
コード例 #2
0
        private async Task <List <KeyValueDTO> > MatchColumnsForSelectedObject(string selectedObject)
        {
            var findObjectHelper = new FindObjectHelper();

            var columnDefinitions = await ExtractColumnDefinitions();

            var columnTypeMap = await findObjectHelper.ExtractColumnTypes(HubCommunicator, ActivityContext);

            var matchedColumns = findObjectHelper.MatchColumnsForSelectedObject(
                columnDefinitions, selectedObject, columnTypeMap);

            return(matchedColumns);
        }
コード例 #3
0
        private StandardPayloadDataCM BuildStandardPayloadData(Table data, Dictionary <string, DbType> columnTypes)
        {
            var findObjectHelper = new FindObjectHelper();

            var payloadCM = new StandardPayloadDataCM();

            var tableData = new List <PayloadObjectDTO>();

            if (data.Rows != null)
            {
                foreach (var row in data.Rows)
                {
                    if (row.Values == null)
                    {
                        continue;
                    }

                    var payloadObject = new PayloadObjectDTO();
                    foreach (var fieldValue in row.Values)
                    {
                        var columnName = data.TableInfo.ToString() + "." + fieldValue.Field;

                        DbType dbType;
                        if (!columnTypes.TryGetValue(columnName, out dbType))
                        {
                            throw new ApplicationException("No column data type found.");
                        }

                        payloadObject.PayloadObject.Add(
                            new KeyValueDTO()
                        {
                            Key   = fieldValue.Field,
                            Value = findObjectHelper.ConvertValueToString(fieldValue.Value, dbType)
                        }
                            );
                    }

                    tableData.Add(payloadObject);
                }
            }

            payloadCM.PayloadObjects.AddRange(tableData);

            return(payloadCM);
        }
コード例 #4
0
 public Connect_To_Sql_v1(ICrateManager crateManager)
     : base(crateManager)
 {
     FindObjectHelper = new FindObjectHelper();
 }