37 lines
865 B
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
|
|
}
|