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}