func ParseTablesFlag()

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
}