lens @ 1e4613aa1113b373a8d841c28e222599237a33c5

 1package repository
 2
 3import (
 4	"context"
 5	"strings"
 6	"time"
 7)
 8
 9type (
10	Media struct {
11		ID       uint
12		Name     string
13		Path     string
14		PathHash string
15		MIMEType string
16	}
17
18	MediaEXIF struct {
19		Width           *float64
20		Height          *float64
21		Description     *string
22		Camera          *string
23		Maker           *string
24		Lens            *string
25		DateShot        *time.Time
26		Exposure        *float64
27		Aperture        *float64
28		Iso             *int64
29		FocalLength     *float64
30		Flash           *int64
31		Orientation     *int64
32		ExposureProgram *int64
33		GPSLatitude     *float64
34		GPSLongitude    *float64
35	}
36
37	MediaThumbnail struct {
38		Path string
39	}
40
41	Pagination struct {
42		Page int
43		Size int
44		Path string
45	}
46
47	CreateMedia struct {
48		Name     string
49		Path     string
50		PathHash string
51		MIMEType string
52	}
53
54	MediaRepository interface {
55		Create(context.Context, *CreateMedia) error
56		Exists(context.Context, string) (bool, error)
57		List(context.Context, *Pagination) ([]*Media, error)
58		Get(context.Context, string) (*Media, error)
59		GetPath(context.Context, string) (string, error)
60		GetThumbnailPath(context.Context, string) (string, error)
61
62		ListEmptyEXIF(context.Context, *Pagination) ([]*Media, error)
63		GetEXIF(context.Context, uint) (*MediaEXIF, error)
64		CreateEXIF(context.Context, uint, *MediaEXIF) error
65
66		ListEmptyThumbnail(context.Context, *Pagination) ([]*Media, error)
67		GetThumbnail(context.Context, uint) (*MediaThumbnail, error)
68		CreateThumbnail(context.Context, uint, *MediaThumbnail) error
69	}
70)
71
72func (m *Media) IsVideo() bool {
73	return strings.HasPrefix(m.MIMEType, "video")
74}