73 lines
3 KiB
Go
73 lines
3 KiB
Go
package query
|
|
|
|
import "github.com/photoprism/photoprism/internal/entity"
|
|
|
|
type Counts struct {
|
|
Cameras int `json:"cameras"`
|
|
Lenses int `json:"lenses"`
|
|
Countries int `json:"countries"`
|
|
Photos int `json:"photos"`
|
|
Videos int `json:"videos"`
|
|
Hidden int `json:"hidden"`
|
|
Favorites int `json:"favorites"`
|
|
Private int `json:"private"`
|
|
Review int `json:"review"`
|
|
Stories int `json:"stories"`
|
|
Albums int `json:"albums"`
|
|
Folders int `json:"folders"`
|
|
Files int `json:"files"`
|
|
Moments int `json:"moments"`
|
|
Places int `json:"places"`
|
|
Labels int `json:"labels"`
|
|
LabelMaxPhotos int `json:"labelMaxPhotos"`
|
|
}
|
|
|
|
func (c *Counts) Refresh() {
|
|
Db().Table("cameras").
|
|
Where("camera_slug <> 'zz' AND camera_slug <> ''").
|
|
Select("COUNT(*) AS cameras").
|
|
Take(c)
|
|
|
|
Db().Table("lenses").
|
|
Where("lens_slug <> 'zz' AND lens_slug <> ''").
|
|
Select("COUNT(*) AS lenses").
|
|
Take(c)
|
|
|
|
Db().Table("photos").
|
|
Select("SUM(photo_type = 'video' AND photo_quality > -1 AND photo_private = 0) AS videos, SUM(photo_type IN ('image','raw','live','animated') AND photo_quality < 3 AND photo_quality > -1 AND photo_private = 0) AS review, SUM(photo_quality = -1) AS hidden, SUM(photo_type IN ('image','raw','live','animated') AND photo_private = 0 AND photo_quality > -1) AS photos, SUM(photo_favorite = 1 AND photo_quality > -1) AS favorites, SUM(photo_private = 1 AND photo_quality > -1) AS private").
|
|
Where("photos.id NOT IN (SELECT photo_id FROM files WHERE file_primary = 1 AND (file_missing = 1 OR file_error <> ''))").
|
|
Where("deleted_at IS NULL").
|
|
Take(c)
|
|
|
|
Db().Table("labels").
|
|
Select("MAX(photo_count) as label_max_photos, COUNT(*) AS labels").
|
|
Where("photo_count > 0").
|
|
Where("deleted_at IS NULL").
|
|
Where("(label_priority >= 0 || label_favorite = 1)").
|
|
Take(c)
|
|
|
|
Db().Table("albums").
|
|
Select("SUM(album_type = ?) AS albums, SUM(album_type = ?) AS moments, SUM(album_type = ?) AS folders", entity.AlbumDefault, entity.AlbumMoment, entity.AlbumFolder).
|
|
Where("deleted_at IS NULL").
|
|
Take(c)
|
|
|
|
Db().Table("files").
|
|
Select("COUNT(*) AS files").
|
|
Where("file_missing = 0 AND file_root = ?", entity.RootOriginals).
|
|
Take(c)
|
|
|
|
Db().Table("countries").
|
|
Select("(COUNT(*) - 1) AS countries").
|
|
Take(c)
|
|
|
|
Db().Table("places").
|
|
Select("SUM(photo_count > 0) AS places").
|
|
Where("id <> 'zz'").
|
|
Take(c)
|
|
|
|
Db().Table("photos").
|
|
Select("SUM(photo_type = 'video' AND photo_quality > -1 AND photo_private = 0) AS videos, SUM(photo_type IN ('image','raw','live','animated') AND photo_quality < 3 AND photo_quality > -1 AND photo_private = 0) AS review, SUM(photo_quality = -1) AS hidden, SUM(photo_type IN ('image','raw','live','animated') AND photo_private = 0 AND photo_quality > -1) AS photos, SUM(photo_favorite = 1 AND photo_quality > -1) AS favorites, SUM(photo_private = 1 AND photo_quality > -1) AS private").
|
|
Where("photos.id NOT IN (SELECT photo_id FROM files WHERE file_primary = 1 AND (file_missing = 1 OR file_error <> ''))").
|
|
Where("deleted_at IS NULL").
|
|
Take(c)
|
|
}
|