| 32 | } |
| 33 | |
| 34 | func valueToString(v *model.Value) (string, error) { |
| 35 | if v.IsNull() { |
| 36 | return "", nil |
| 37 | } |
| 38 | |
| 39 | switch v.Type() { |
| 40 | case model.TypeString: |
| 41 | stringValue, err := v.StringValue() |
| 42 | if err != nil { |
| 43 | return "", err |
| 44 | } |
| 45 | return stringValue, nil |
| 46 | case model.TypeInt: |
| 47 | i, err := v.IntValue() |
| 48 | if err != nil { |
| 49 | return "", err |
| 50 | } |
| 51 | return fmt.Sprintf("%d", i), nil |
| 52 | case model.TypeFloat: |
| 53 | i, err := v.FloatValue() |
| 54 | if err != nil { |
| 55 | return "", err |
| 56 | } |
| 57 | return fmt.Sprintf("%g", i), nil |
| 58 | case model.TypeBool: |
| 59 | i, err := v.BoolValue() |
| 60 | if err != nil { |
| 61 | return "", err |
| 62 | } |
| 63 | return fmt.Sprintf("%t", i), nil |
| 64 | default: |
| 65 | return "", fmt.Errorf("csv writer cannot format type %s to string", v.Type()) |
| 66 | } |
| 67 | } |