omq/export.go

32 lines
677 B
Go

package main
import (
"fmt"
)
type ExportFormat string
const (
ExportFormatExcel ExportFormat = "XLSX"
ExportFormatCsv ExportFormat = "CSV"
ExportFormatCsvZip ExportFormat = "CSV+ZIP"
)
// Exporter - интерфейс экспорта
type Exporter interface {
Convert(filePath string, rows chan []any) error
}
func (e ExportFormat) GetExporter(encoding Encoding) (Exporter, error) {
switch e {
case ExportFormatExcel:
return new(XlsxExporter), nil
case ExportFormatCsv:
return &CsvExporter{Encoding: encoding}, nil
case ExportFormatCsvZip:
return &CsvZipExporter{Encoding: encoding}, nil
}
return nil, fmt.Errorf("unknown format: %s", string(e))
}