refac: decouple persistence and image storage behind driver registries
This commit is contained in:
1 parent
421cfafec3
commit
81e299f09a
46 files changed
+1036
-374
No files matched your search
@@ -191,6 +191,15 @@ type ImageInput struct {
|
||||
UploadedByID uint32
|
||||
}
|
||||
|
||||
type Metadata struct {
|
||||
Filename string
|
||||
Size int64
|
||||
ContentType string
|
||||
Width int
|
||||
Height int
|
||||
SHA256 string
|
||||
}
|
||||
|
||||
type Image struct {
|
||||
ID uint32 `json:"id"`
|
||||
Path string `json:"path"`
|
||||
|
||||
@@ -6,7 +6,7 @@ type SearchQuery struct {
|
||||
}
|
||||
|
||||
type Repository interface {
|
||||
Create(input ImageInput) (Image, error)
|
||||
Create(image Image) (Image, error)
|
||||
Get(id uint32) (Image, error)
|
||||
Delete(id uint32) error
|
||||
List(query SearchQuery) ([]Image, error)
|
||||
@@ -14,4 +14,6 @@ type Repository interface {
|
||||
Rename(id uint32, filename string) (Image, error)
|
||||
ListDuplicates() ([]Image, error)
|
||||
Counts() (Counts, error)
|
||||
ListMissingMetadata() ([]Image, error)
|
||||
UpdateMetadata(id uint32, metadata Metadata) error
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package image
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"io"
|
||||
"time"
|
||||
)
|
||||
|
||||
var ErrBlobNotFound = errors.New("stored image content not found")
|
||||
|
||||
const PublicPathPrefix = "/static/uploadedImages/"
|
||||
|
||||
func PublicPath(storedName string) string {
|
||||
return PublicPathPrefix + storedName
|
||||
}
|
||||
|
||||
type Blob struct {
|
||||
Content io.ReadCloser
|
||||
Size int64
|
||||
ModTime time.Time
|
||||
}
|
||||
|
||||
type Storage interface {
|
||||
Put(contentType string, content io.Reader) (string, error)
|
||||
Open(storedName string) (Blob, error)
|
||||
Delete(storedName string) error
|
||||
}
|
||||
Reference in new issue
Block a user