mirror of
https://github.com/stashapp/stash.git
synced 2025-12-06 08:26:00 +01:00
64 lines
1.1 KiB
Go
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
|
|
}
|