in internal/utils/files_utils.go [81:121]
func ParseTablesFlag(tablesFlag string) (map[string][]string, error) {
tableColumns := make(map[string][]string)
if tablesFlag == "" {
return tableColumns, nil
}
// strip any whitespace
tablesFlag = strings.ReplaceAll(tablesFlag, " ", "")
// Split by comma, but only if the comma is not within square brackets
parts := SplitOutsideBrackets(tablesFlag)
for _, part := range parts {
part = strings.TrimSpace(part)
// Check if there are columns specified
bracketStart := strings.Index(part, "[")
if bracketStart != -1 {
bracketEnd := strings.Index(part, "]")
if bracketEnd == -1 {
return nil, fmt.Errorf("missing closing bracket in: %s", part)
}
tableName := strings.TrimSpace(part[:bracketStart])
columnsStr := strings.TrimSpace(part[bracketStart+1 : bracketEnd])
// Split columns by comma and trim spaces
columns := strings.Split(columnsStr, ",")
var trimmedColumns []string
for _, col := range columns {
trimmedColumns = append(trimmedColumns, strings.TrimSpace(col))
}
tableColumns[tableName] = trimmedColumns
} else {
// No columns specified, just table name
tableColumns[part] = nil
}
}
return tableColumns, nil
}