36 lines
644 B
Go
36 lines
644 B
Go
package excel
|
|
|
|
type ExporterInterface interface {
|
|
GetSheetName() string
|
|
GetEntity() any
|
|
GetProvider() func() ([]any, error)
|
|
}
|
|
|
|
type Exporter[T any] struct {
|
|
SheetName string
|
|
Entity T
|
|
Provider func() ([]*T, error)
|
|
}
|
|
|
|
func (e Exporter[T]) GetSheetName() string {
|
|
return e.SheetName
|
|
}
|
|
|
|
func (e Exporter[T]) GetEntity() any {
|
|
return e.Entity
|
|
}
|
|
|
|
func (e Exporter[T]) GetProvider() func() ([]any, error) {
|
|
return func() ([]any, error) {
|
|
entities, err := e.Provider()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result := make([]any, len(entities))
|
|
for i, entity := range entities {
|
|
result[i] = entity
|
|
}
|
|
return result, nil
|
|
}
|
|
}
|