package storage

import (
	"io"
	"time"

	"github.com/spf13/viper"
)

const (
	PREFIX_BENEFICIARIES = "beneficiaries"
	PREFIX_BOOKINGS      = "fleets_bookings"
)

type FileInfo struct {
	Key          string
	FileName     string
	LastModified time.Time
	ContentType  string
	Metadata     map[string]string
}

type FileStorage interface {
	Put(reader io.Reader, prefix string, filename string, size int64, metadata map[string]string) error
	List(prefix string) []FileInfo
	Get(prefix string, file string) (io.Reader, *FileInfo, error)
	Copy(src string, dest string) error
}

func NewFileStorage(cfg *viper.Viper) (FileStorage, error) {
	return NewMinioStorageHandler(cfg)
}
