repos / pico

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

pico / pkg / pobj / storage
Eric Bower  ยท  2025-04-18

storage.go

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