package main import ( "fmt" ) type ExportFormat string const ( ExportFormatExcel ExportFormat = "XLSX" ExportFormatCsv ExportFormat = "CSV" ExportFormatCsvZip ExportFormat = "CSV+ZIP" ExportFormatCsvZst ExportFormat = "CSV+ZSTD" ) // 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 case ExportFormatCsvZst: return &CsvZstExporter{Encoding: encoding}, nil } return nil, fmt.Errorf("unknown format: %s", string(e)) }