2018-09-16 19:09:40 +02:00
|
|
|
package models
|
2018-07-18 15:17:56 +02:00
|
|
|
|
|
|
|
import (
|
2019-05-14 18:16:35 +02:00
|
|
|
"fmt"
|
|
|
|
|
|
|
|
"github.com/gosimple/slug"
|
2018-07-18 15:17:56 +02:00
|
|
|
"github.com/jinzhu/gorm"
|
|
|
|
)
|
|
|
|
|
2018-11-18 19:18:19 +01:00
|
|
|
// An image or sidecar file that belongs to a photo
|
2018-07-18 15:17:56 +02:00
|
|
|
type File struct {
|
|
|
|
gorm.Model
|
2019-05-14 18:16:35 +02: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 15:17:56 +02:00
|
|
|
}
|