in cassandra-bigtable-migration-tools/cassandra-bigtable-proxy/translator/translator_insert.go [47:104]
func parseColumnsAndValuesFromInsert(input cql.IInsertColumnSpecContext, tableName string, schemaMapping *schemaMapping.SchemaMappingConfig, keyspace string) (*ColumnsResponse, error) {
if input == nil {
return nil, errors.New("parseColumnsAndValuesFromInsert: No Input paramaters found for columns")
}
columnListObj := input.ColumnList()
if columnListObj == nil {
return nil, errors.New("parseColumnsAndValuesFromInsert: error while parsing columns")
}
columns := columnListObj.AllColumn()
if columns == nil {
return nil, errors.New("parseColumnsAndValuesFromInsert: error while parsing columns")
}
if len(columns) <= 0 {
return nil, errors.New("parseColumnsAndValuesFromInsert: No Columns found in the Insert Query")
}
var columnArr []Column
var paramKeys []string
var primaryColumns []string
for _, val := range columns {
columnName := val.GetText()
if columnName == "" {
return nil, errors.New("parseColumnsAndValuesFromInsert: No Columns found in the Insert Query")
}
columnName = strings.ReplaceAll(columnName, literalPlaceholder, "")
columnType, err := schemaMapping.GetColumnType(keyspace, tableName, columnName)
if err != nil {
return nil, fmt.Errorf("undefined column name %s in table %s.%s", columnName, keyspace, tableName)
}
isPrimaryKey := false
if columnType.IsPrimaryKey {
isPrimaryKey = true
}
column := Column{
Name: columnName,
ColumnFamily: schemaMapping.SystemColumnFamily,
CQLType: columnType.CQLType,
IsPrimaryKey: isPrimaryKey,
}
if columnType.IsPrimaryKey {
primaryColumns = append(primaryColumns, columnName)
}
columnArr = append(columnArr, column)
paramKeys = append(paramKeys, columnName)
}
response := &ColumnsResponse{
Columns: columnArr,
ParamKeys: paramKeys,
PrimayColumns: primaryColumns,
}
return response, nil
}