using Butter.Types; namespace Butter.Dtos.Stats; /// /// Comprehensive statistics about the MilkyShots instance, gatherable from fast aggregate queries. /// public class StatsDto { /// /// Gets or sets the total number of assets (excluding soft-deleted). /// public int TotalAssets { get; set; } /// /// Gets or sets the total number of registered users (excluding soft-deleted). /// public int TotalUsers { get; set; } /// /// Gets or sets the total number of albums. /// public int TotalAlbums { get; set; } /// /// Gets or sets the total number of tags. /// public int TotalTags { get; set; } /// /// Gets or sets the total number of people. /// public int TotalPeople { get; set; } /// /// Gets or sets the total number of detected faces. /// public int TotalFaces { get; set; } /// /// Gets or sets the total number of watched folders. /// public int TotalFolders { get; set; } /// /// Gets or sets the asset count broken down by type (Image, Video, Animation, PhotoSphere). /// public Dictionary AssetsByType { get; set; } = []; /// /// Gets or sets the total storage used by all assets in bytes. /// public long TotalStorageBytes { get; set; } /// /// Gets or sets the storage used broken down by asset type. /// public Dictionary StorageByType { get; set; } = []; /// /// Gets or sets the user count broken down by access level. /// public Dictionary UsersByAccessLevel { get; set; } = []; /// /// Gets or sets the number of assets added in the last 7 days. /// public int AssetsAddedLast7Days { get; set; } /// /// Gets or sets the number of assets added in the last 30 days. /// public int AssetsAddedLast30Days { get; set; } /// /// Gets or sets the number of users registered in the last 30 days. /// public int UsersRegisteredLast30Days { get; set; } /// /// Gets or sets the number of assets with no associated folder. /// public int OrphanAssets { get; set; } /// /// Gets or sets the number of publicly shared assets. /// public int PublicAssets { get; set; } /// /// Gets or sets the number of assets with protected visibility (authenticated only). /// public int ProtectedAssets { get; set; } /// /// Gets or sets the number of private assets. /// public int PrivateAssets { get; set; } /// /// Gets or sets the number of image assets missing resolution metadata. /// public int AssetsMissingMetadata { get; set; } /// /// Gets or sets the number of assets missing a generated thumbnail. /// public int AssetsMissingThumbnail { get; set; } /// /// Gets or sets the number of assets whose thumbnail was generated at a different size than the current setting. /// public int AssetsMissingThumbnailStale { get; set; } /// /// Gets or sets the number of assets missing a generated preview. /// public int AssetsMissingPreviews { get; set; } /// /// Gets or sets the number of assets whose preview was generated at a different size than the current setting. /// public int AssetsMissingPreviewsStale { get; set; } /// /// Gets or sets the number of assets missing a perceptual hash. /// public int AssetsMissingPhash { get; set; } /// /// Gets or sets the number of assets whose processing failed (marked broken). /// public int TotalBrokenAssets { get; set; } /// /// Gets or sets the number of assets with no person assigned (no album with a PersonOwner). /// public int AssetsWithNoPerson { get; set; } /// /// Gets or sets the number of assets with no album assigned. /// public int AssetsWithNoAlbum { get; set; } /// /// Gets or sets the number of albums without a cover image. /// public int AlbumsMissingCover { get; set; } /// /// Gets or sets the number of people/cosplayers without a profile picture. /// public int CosplayersMissingProfile { get; set; } /// /// Gets or sets the top tags by asset count. /// public List TopTags { get; set; } = []; /// /// Gets or sets the resolution distribution of assets. /// public List ResolutionDistribution { get; set; } = []; /// /// Gets or sets the file format breakdown by MIME type. /// public List FileFormatBreakdown { get; set; } = []; /// /// Gets or sets the monthly new-asset and new-user counts for the last 12 months. /// public List MonthlyGrowth { get; set; } = []; }