366c70d992
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
66 lines
1.2 KiB
Go
66 lines
1.2 KiB
Go
package entity
|
|
|
|
import (
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/jinzhu/gorm"
|
|
"github.com/photoprism/photoprism/internal/maps"
|
|
"github.com/photoprism/photoprism/internal/util"
|
|
)
|
|
|
|
// Photo location
|
|
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
|
|
}
|
|
|
|
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
|
|
}
|