internal/kusto/dataformat.go (35 lines of code) (raw):
package kusto
import (
"fmt"
"strings"
"github.com/Azure/azure-kusto-go/kusto/ingest"
)
// TODO: discuss with upstream to let ingest.DataFormat implement UnmarshalJSON.
var supportedIngestDataFormatsByString = func() map[DataFormatString]ingest.DataFormat {
ss := []ingest.DataFormat{
ingest.MultiJSON,
ingest.JSON,
ingest.CSV,
}
rv := map[DataFormatString]ingest.DataFormat{}
for _, s := range ss {
rv[DataFormatString(s.String())] = s
}
return rv
}()
var supportedIngestDataFormatsHint = func() string {
var ss []string
for n := range supportedIngestDataFormatsByString {
ss = append(ss, string(n))
}
return strings.Join(ss, ", ")
}()
type DataFormatString string
func (d DataFormatString) Validate() error {
if _, ok := supportedIngestDataFormatsByString[d]; !ok {
return fmt.Errorf("unsupported data format: %q, supported: %s", d, supportedIngestDataFormatsHint)
}
return nil
}
func (d DataFormatString) ToIngestDataFormat() ingest.DataFormat {
return supportedIngestDataFormatsByString[d]
}