aboutsummaryrefslogtreecommitdiff
path: root/pkg/database/repository/media.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/database/repository/media.go')
-rw-r--r--pkg/database/repository/media.go64
1 files changed, 64 insertions, 0 deletions
diff --git a/pkg/database/repository/media.go b/pkg/database/repository/media.go
new file mode 100644
index 0000000..2e94ff3
--- /dev/null
+++ b/pkg/database/repository/media.go
@@ -0,0 +1,64 @@
+package repository
+
+import (
+ "context"
+ "strings"
+ "time"
+)
+
+type (
+ Media struct {
+ ID uint
+ Name string
+ Path string
+ PathHash string
+ MIMEType string
+ }
+
+ MediaEXIF struct {
+ Width *float64
+ Height *float64
+ Description *string
+ Camera *string
+ Maker *string
+ Lens *string
+ DateShot *time.Time
+ Exposure *float64
+ Aperture *float64
+ Iso *int64
+ FocalLength *float64
+ Flash *int64
+ Orientation *int64
+ ExposureProgram *int64
+ GPSLatitude *float64
+ GPSLongitude *float64
+ }
+
+ Pagination struct {
+ Page int
+ Size int
+ }
+
+ CreateMedia struct {
+ Name string
+ Path string
+ PathHash string
+ MIMEType string
+ }
+
+ MediaRepository interface {
+ Create(context.Context, *CreateMedia) error
+ Exists(context.Context, string) (bool, error)
+ List(context.Context, *Pagination) ([]*Media, error)
+ Get(context.Context, string) (*Media, error)
+ GetPath(context.Context, string) (string, error)
+
+ GetEmptyEXIF(context.Context, *Pagination) ([]*Media, error)
+ GetEXIF(context.Context, uint) (*MediaEXIF, error)
+ CreateEXIF(context.Context, uint, *MediaEXIF) error
+ }
+)
+
+func (m *Media) IsVideo() bool {
+ return strings.HasPrefix(m.MIMEType, "video")
+}