photoprism/internal/models/file.go

45 lines
1 KiB
Go
Raw Normal View History

2018-09-16 17:09:40 +00:00
package models
2018-07-18 13:17:56 +00:00
import (
2019-05-14 16:16:35 +00:00
"fmt"
"github.com/gosimple/slug"
2018-07-18 13:17:56 +00:00
"github.com/jinzhu/gorm"
)
2018-11-18 18:18:19 +00:00
// An image or sidecar file that belongs to a photo
2018-07-18 13:17:56 +00:00
type File struct {
gorm.Model
2019-05-14 16:16:35 +00:00
Photo *Photo
PhotoID uint
FilePrimary bool
FileMissing bool
FileDuplicate bool
FileName string `gorm:"type:varchar(512);index"` // max 3072 bytes / 4 bytes for utf8mb4 = 768 chars
FileOriginalName string
FileType string `gorm:"type:varchar(32)"`
FileMime string `gorm:"type:varchar(64)"`
FileWidth int
FileHeight int
FileOrientation int
FileAspectRatio float64
FileMainColor string
FileColors string
FileLuminance string
FileSaturation uint
FileHash string `gorm:"type:varchar(128);unique_index"`
FileNotes string `gorm:"type:text"`
}
func (f *File) DownloadFileName(db *gorm.DB) string {
var photo Photo
db.Model(f).Related(&photo)
name := slug.MakeLang(photo.PhotoTitle, "en")
result := fmt.Sprintf("%s.%s", name, f.FileType)
return result
2018-07-18 13:17:56 +00:00
}