omq/export.go

35 lines
799 B
Go
Raw Permalink Normal View History

2023-11-17 20:34:20 +05:00
package main
import (
"fmt"
)
type ExportFormat string
const (
ExportFormatExcel ExportFormat = "XLSX"
ExportFormatCsv ExportFormat = "CSV"
ExportFormatCsvZip ExportFormat = "CSV+ZIP"
2024-03-09 21:54:26 +05:00
ExportFormatCsvZst ExportFormat = "CSV+ZSTD"
2023-11-17 20:34:20 +05:00
)
// 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
2024-03-09 21:54:26 +05:00
case ExportFormatCsvZst:
return &CsvZstExporter{Encoding: encoding}, nil
2023-11-17 20:34:20 +05:00
}
return nil, fmt.Errorf("unknown format: %s", string(e))
}