blockreader.go 630 B

123456789101112131415161718192021222324
  1. package reader
  2. import (
  3. "io"
  4. "path/filepath"
  5. "git.wecise.com/wecise/cgimport/schema"
  6. "git.wecise.com/wecise/util/merrs"
  7. )
  8. type BlockReader interface {
  9. ReadBlock() (block map[string]any, line string, linecount int, err error)
  10. }
  11. func NewBlockReader(filename string, filetype schema.FileType, reader io.Reader) (BlockReader, error) {
  12. fileext := filepath.Ext(filename)
  13. switch fileext {
  14. case ".csv":
  15. return NewCSVBlockReader(filename, filetype, reader), nil
  16. case ".txt":
  17. return NewTXTBlockReader(filename, filetype, reader), nil
  18. }
  19. return nil, merrs.UnsupportedError.NewError("unsupported data format " + filetype)
  20. }