package types

import (
	"io"
)

type PublicStoreEntry struct {
	Path  string
	Size  int64
	IsDir bool
}

type PublicStore interface {
	Write(path string, stream io.Reader) error
	Read(path string) (io.ReadCloser, error)
	// 创建指定路径的文件夹。对于不支持空文件夹的存储系统来说，可以采用创建以/结尾的对象的方式来模拟文件夹。
	Mkdir(path string) error
	// 返回指定路径下的所有文件，文件路径是包含path在内的完整路径。返回结果的第一条一定是路径本身，可能是文件，也可能是目录。
	// 如果路径不存在，那么不会返回错误，而是返回一个空列表。
	// 返回的内容严格按照存储系统的原始结果来，比如当存储系统是一个对象存储时，那么就可能不会包含目录，或者包含用于模拟的以“/”结尾的对象。
	ListAll(path string) ([]PublicStoreEntry, error)
}
