//------------------------------------------------------------------------------------------
        //private helpers

        /// <summary>
        /// This returns all the foreign keys linking the parent table to the primary keys on the referenced table
        /// </summary>
        /// <param name="parentTableName"></param>
        /// <param name="referencedTableAndKey"></param>
        /// <returns></returns>
        private IList <SqlForeignKey> GetForeignKeys(string parentTableName, SqlTableInfo referencedTableAndKey)
        {
            return(_allSqlInfo.ForeignKeys.Where(x => x.ParentTableName == parentTableName &&
                                                 x.ReferencedTableName == referencedTableAndKey.TableName
                                                 &&
                                                 referencedTableAndKey.ColumnInfos.Where(y => y.IsPrimaryKey)
                                                 .Select(y => y.ColumnName)
                                                 .Contains(x.ReferencedColName)).ToList());
        }
        static TestHelper()
        {
            var splitSep = new[] { ' ', ',' };

            defaultTableInfo = new SqlTableInfo
            {
                TableName    = Consts.DEF_TABLE,
                KeyColumn    = Consts.DEF_KEY,
                WritableCols = Consts.DEF_DATACOLS.Split(splitSep, StringSplitOptions.RemoveEmptyEntries),
                Columns      = Consts.DEF_COLUMNS.Split(splitSep, StringSplitOptions.RemoveEmptyEntries),
            };
        }
Exemple #3
0
        private async Task <IEnumerable <ICompletionData> > Columns(SqlTableInfo info, bool includeAlias = true)
        {
            var result = new List <ICompletionData>();

            var alias = info.Alias;

            if (this._tableNameColumnPrefix && info.Name != null)
            {
                alias = "[" + info.Name.Name + "]";
            }
            if (!includeAlias)
            {
                alias = null;
            }


            if (info.Columns == null && info.AdditionalColumns == null)
            {
                var allProps = await _provider.GetColumnNames(info.Name.FullName).ToTask();

                result.AddRange(new PropertyCompletionFactory().GetCompletions(allProps, alias));
            }
            else
            {
                if (info.Columns != null)
                {
                    result.AddRange(info.Columns
                                    .Select(c => ColumnCompletion(c, alias)));
                }

                if (info.AdditionalColumns != null)
                {
                    var properties = (await Promises.All(info.AdditionalColumns
                                                         .Select(i => _provider.GetColumnNames(i.Name.FullName)).ToArray())
                                      .ToTask()).OfType <IEnumerable <IListValue> >();
                    var allProps = properties.SelectMany(p => p);
                    result.AddRange(new PropertyCompletionFactory().GetCompletions(allProps, alias));
                }
            }

            return(result);
        }
    private async Task<IEnumerable<ICompletionData>> Columns(SqlTableInfo info, bool includeAlias = true)
    {
      var result = new List<ICompletionData>();

      var alias = info.Alias;
      if (this._tableNameColumnPrefix && info.Name != null)
        alias = "[" + info.Name.Name + "]";
      if (!includeAlias)
        alias = null;


      if (info.Columns == null && info.AdditionalColumns == null)
      {
        var allProps = await _provider.GetColumnNames(info.Name.FullName).ToTask();
        result.AddRange(new PropertyCompletionFactory().GetCompletions(allProps, alias));
      }
      else
      {
        if (info.Columns != null)
        {
          result.AddRange(info.Columns
            .Select(c => ColumnCompletion(c, alias)));
        }

        if (info.AdditionalColumns != null)
        {
          var properties = (await Promises.All(info.AdditionalColumns
                                  .Select(i => _provider.GetColumnNames(i.Name.FullName)).ToArray())
                                .ToTask()).OfType<IEnumerable<IListValue>>();
          var allProps = properties.SelectMany(p => p);
          result.AddRange(new PropertyCompletionFactory().GetCompletions(allProps, alias));
        }
      }

      return result;
    }