photoprism/internal/entity/location.go

67 lines
1.2 KiB
Go
Raw Normal View History

package entity
2018-09-16 19:09:40 +02:00
import (
"strings"
"time"
"github.com/jinzhu/gorm"
"github.com/photoprism/photoprism/internal/maps"
"github.com/photoprism/photoprism/internal/util"
)
2018-11-06 19:02:03 +01:00
// Photo location
2018-09-16 19:09:40 +02:00
type Location struct {
maps.Location
LocNotes string `gorm:"type:text;"`
LocFavorite bool
CreatedAt time.Time
UpdatedAt time.Time
}
func NewLocation(lat, lng float64) *Location {
result := &Location{}
result.ID = maps.ID(lat, lng)
result.LocLat = lat
result.LocLng = lng
return result
2018-09-17 18:40:57 +02:00
}
func (m *Location) Category() string {
return m.LocCategory
}
func (m *Location) Find(db *gorm.DB) error {
if err := db.First(m, "id LIKE ?", m.ID+"%").Error; err == nil {
return err
}
if err := m.Query(); err != nil {
return err
}
if err := db.Create(m).Error; err != nil {
log.Errorf("location: %s", err)
return err
}
return nil
}
func (m *Location) Keywords() []string {
result := []string{
strings.ToLower(m.LocCity),
strings.ToLower(m.LocSuburb),
strings.ToLower(m.LocState),
strings.ToLower(m.CountryName()),
strings.ToLower(m.LocCategory),
}
result = append(result, util.Keywords(m.LocName)...)
result = append(result, util.Keywords(m.LocPlace)...)
result = append(result, util.Keywords(m.LocNotes)...)
return result
}