stash/internal/api/models.go
DingDongSoLong4 049a1b15c3
Add fingerprint resolver (#4287)
* Refactor into internal/api/models.go
* Add file fingerprint resolver
2023-11-20 13:09:12 +11:00

64 lines
1.1 KiB
Go

package api
import (
"fmt"
"github.com/stashapp/stash/pkg/models"
)
type BaseFile interface {
IsBaseFile()
}
type VisualFile interface {
IsVisualFile()
}
func convertVisualFile(f models.File) (VisualFile, error) {
switch f := f.(type) {
case VisualFile:
return f, nil
case *models.VideoFile:
return &VideoFile{VideoFile: f}, nil
case *models.ImageFile:
return &ImageFile{ImageFile: f}, nil
default:
return nil, fmt.Errorf("file %s is not a visual file", f.Base().Path)
}
}
type GalleryFile struct {
*models.BaseFile
}
func (GalleryFile) IsBaseFile() {}
func (GalleryFile) IsVisualFile() {}
func (f *GalleryFile) Fingerprints() []models.Fingerprint {
return f.BaseFile.Fingerprints
}
type VideoFile struct {
*models.VideoFile
}
func (VideoFile) IsBaseFile() {}
func (VideoFile) IsVisualFile() {}
func (f *VideoFile) Fingerprints() []models.Fingerprint {
return f.VideoFile.Fingerprints
}
type ImageFile struct {
*models.ImageFile
}
func (ImageFile) IsBaseFile() {}
func (ImageFile) IsVisualFile() {}
func (f *ImageFile) Fingerprints() []models.Fingerprint {
return f.ImageFile.Fingerprints
}