lens @ master

  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	Album struct {
 38		ID   uint
 39		Name string
 40		Path string
 41	}
 42
 43	MediaThumbnail struct {
 44		Path string
 45	}
 46
 47	Pagination struct {
 48		Page    int
 49		Size    int
 50		AlbumID *uint
 51		Path    string
 52	}
 53
 54	CreateMedia struct {
 55		Name     string
 56		Path     string
 57		PathHash string
 58		MIMEType string
 59	}
 60
 61	CreateAlbum struct {
 62		ParentID *uint
 63		Name     string
 64		Path     string
 65	}
 66
 67	CreateAlbumFile struct {
 68		MediaID uint
 69		AlbumID uint
 70	}
 71
 72	MediaRepository interface {
 73		Create(context.Context, *CreateMedia) error
 74		Exists(context.Context, string) (bool, error)
 75		List(context.Context, *Pagination) ([]*Media, error)
 76		Get(context.Context, string) (*Media, error)
 77		GetPath(context.Context, string) (string, error)
 78		GetThumbnailPath(context.Context, string) (string, error)
 79
 80		ListEmptyEXIF(context.Context, *Pagination) ([]*Media, error)
 81		GetEXIF(context.Context, uint) (*MediaEXIF, error)
 82		CreateEXIF(context.Context, uint, *MediaEXIF) error
 83
 84		ListEmptyThumbnail(context.Context, *Pagination) ([]*Media, error)
 85		GetThumbnail(context.Context, uint) (*MediaThumbnail, error)
 86		CreateThumbnail(context.Context, uint, *MediaThumbnail) error
 87
 88		ListEmptyAlbums(context.Context, *Pagination) ([]*Media, error)
 89		ListAlbums(context.Context, uint) ([]*Album, error)
 90		ExistsAlbumByAbsolutePath(context.Context, string) (bool, error)
 91		GetAlbumByAbsolutePath(context.Context, string) (*Album, error)
 92		GetAlbum(context.Context, uint) (*Album, error)
 93		CreateAlbum(context.Context, *CreateAlbum) (*Album, error)
 94		CreateAlbumFile(context.Context, *CreateAlbumFile) error
 95	}
 96)
 97
 98func (m *Media) IsVideo() bool {
 99	return strings.HasPrefix(m.MIMEType, "video")
100}