repos / pico

pico services mono repo
git clone https://github.com/picosh/pico.git

pico / pkg / storage
Eric Bower  ·  2026-04-20

storage.go

 1package storage
 2
 3import (
 4	"io"
 5	"os"
 6	"time"
 7
 8	"github.com/picosh/pico/pkg/send/utils"
 9)
10
11type Bucket struct {
12	Name string
13	Path string
14	Root string
15}
16
17type ObjectInfo struct {
18	Size         int64
19	LastModified time.Time
20	ETag         string
21	ContentType  string
22}
23
24type BucketStorage interface {
25	GetBucket(name string) (Bucket, error)
26	GetBucketQuota(bucket Bucket) (uint64, error)
27	UpsertBucket(name string) (Bucket, error)
28	ListBuckets() ([]string, error)
29	DeleteBucket(bucket Bucket) error
30}
31
32type ObjectStorage interface {
33	GetObject(bucket Bucket, fpath string) (utils.ReadAndReaderAtCloser, *ObjectInfo, error)
34	PutObject(bucket Bucket, fpath string, contents io.Reader, info *ObjectInfo) (string, int64, error)
35	DeleteObject(bucket Bucket, fpath string) error
36	ListObjects(bucket Bucket, dir string, recursive bool) ([]os.FileInfo, error)
37}
38
39type StorageServe interface {
40	BucketStorage
41	ObjectStorage
42}