func processStrings()

in cassandra-bigtable-migration-tools/cassandra-bigtable-proxy/translator/translator_select.go [313:359]


func processStrings(t *Translator, selectedColumns []schemaMapping.SelectedColumns, tableName string, keySpace string, isGroupBy bool) (map[string]AsKeywordMeta, []string, error) {
	lenInputString := len(selectedColumns)
	var columns = make([]string, 0)
	structs := make([]AsKeywordMeta, 0, lenInputString)
	columnFamily := t.SchemaMappingConfig.SystemColumnFamily
	var err error
	for _, columnMetadata := range selectedColumns {
		dataType := ""
		isStructUpdated := false
		if columnMetadata.IsFunc {
			//todo: implement genereralized handling of writetime with rest of the aggregate functions
			columns, dataType, err = processFunctionColumn(t, columnMetadata, tableName, keySpace, columns)
			if err != nil {
				return nil, nil, err
			}
			if !isStructUpdated {
				structs = append(structs, AsKeywordMeta{
					IsFunc:   columnMetadata.IsFunc,
					Name:     columnMetadata.FuncColumnName,
					Alias:    columnMetadata.Alias,
					DataType: dataType,
				})
			}
			continue
		} else {
			columns, structs, dataType, isStructUpdated, err = processNonFunctionColumn(t, columnMetadata, tableName, keySpace, columnFamily, columns, structs, isGroupBy)
			if err != nil {
				return nil, nil, err
			}
		}
		if !isStructUpdated {
			structs = append(structs, AsKeywordMeta{
				IsFunc:   columnMetadata.IsFunc,
				Name:     columnMetadata.Name,
				Alias:    columnMetadata.Alias,
				DataType: dataType,
			})
		}
	}
	var aliasMap = make(map[string]AsKeywordMeta)
	for _, meta := range structs {
		if meta.Alias != "" {
			aliasMap[meta.Alias] = meta
		}
	}
	return aliasMap, columns, nil
}