photoprism/internal/query/places.go

37 lines
865 B
Go

package query
import (
"github.com/photoprism/photoprism/internal/entity"
)
type Cell struct {
ID string
PlaceID string
}
type Cells []Cell
// CellIDs returns all known S2 cell ids as Cell slice.
func CellIDs() (result Cells, err error) {
tableName := entity.Cell{}.TableName()
var count int64
if err = UnscopedDb().Table(tableName).Where("id <> 'zz'").Count(&count).Error; err != nil {
return result, err
}
result = make(Cells, 0, count)
err = UnscopedDb().Table(tableName).Select("id, place_id").Where("id <> 'zz'").Order("id").Scan(&result).Error
return result, err
}
// PurgePlaces removes unused entries from the places table.
func PurgePlaces() error {
query := "DELETE FROM places WHERE id NOT IN (SELECT DISTINCT place_id FROM cells)" +
" AND id NOT IN (SELECT DISTINCT place_id FROM photos)"
return Db().Exec(query).Error
}