Files
Gardomatic/internal/storage/images.go
T
kleiax 904d14b64c
CI / test (push) Canceled after 0s
Initial commit
2026-09-12 22:22:17 +02:00

45 lines
1.3 KiB
Go

package storage
import "time"
// MaxImageSize is the largest image payload accepted by storage, in bytes.
const MaxImageSize = 10 << 20
// ImageModelInterface persists garden-owned image data and assignment history.
type ImageModelInterface interface {
Insert(image Image) (Image, error)
Get(gardenID, id int) (Image, error)
GetAllForGarden(gardenID int, filter ImageFilter) ([]Image, error)
CountForGarden(gardenID int) (int, error)
RecordAssignment(change ImageAssignment) error
}
// Image is a binary image stored in a garden's reusable media library.
type Image struct {
ID int `json:"id"`
GardenID int `json:"garden_id"`
FileName string `json:"file_name"`
MediaType string `json:"media_type"`
Size int64 `json:"size"`
Source string `json:"source"`
CreatedBy int `json:"created_by"`
CreatedAt time.Time `json:"created_at"`
Data []byte `json:"-"`
}
// ImageFilter restricts image-library queries by filename or media type.
type ImageFilter struct {
Source string
Query string
}
// ImageAssignment records an image change on a garden entity.
type ImageAssignment struct {
GardenID int
EntityType string
EntityID int
PreviousImageID *int
ImageID *int
ChangedBy int
}