feat: excel service

This commit is contained in:
2025-03-13 14:16:50 +07:00
parent 3b7b62d31a
commit 76f28b4610
21 changed files with 606 additions and 397 deletions

View File

@@ -0,0 +1,35 @@
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
}
}