photoprism/query.go
2018-09-06 14:47:32 +02:00

46 lines
1,023 B
Go

package photoprism
import (
"github.com/jinzhu/gorm"
)
type Search struct {
originalsPath string
db *gorm.DB
}
func NewQuery(originalsPath string, db *gorm.DB) *Search {
instance := &Search{
originalsPath: originalsPath,
db: db,
}
return instance
}
func (s *Search) FindPhotos(query string, count int, offset int) (photos []Photo) {
q := s.db.Preload("Tags").Preload("Files").Preload("Location").Preload("Albums")
if query != "" {
q = q.Joins("JOIN photo_tags ON photo_tags.photo_id=photos.id")
q = q.Joins("JOIN tags ON photo_tags.tag_id=tags.id")
q = q.Where("tags.label LIKE ?", "%"+query+"%")
}
q = q.Where(&Photo{Deleted: false}).Order("taken_at").Limit(count).Offset(offset)
q = q.Find(&photos)
return photos
}
func (s *Search) FindFiles(count int, offset int) (files []File) {
s.db.Where(&File{}).Limit(count).Offset(offset).Find(&files)
return files
}
func (s *Search) FindFile(id string) (file File) {
s.db.Where("id = ?", id).First(&file)
return file
}