from django.db.models import Sum

from funkwhale_api.favorites.models import TrackFavorite
from funkwhale_api.history.models import Listening
from funkwhale_api.music import models
from funkwhale_api.users.models import User


def get():
    return {
        "users": get_users(),
        "tracks": get_tracks(),
        "albums": get_albums(),
        "artists": get_artists(),
        "track_favorites": get_track_favorites(),
        "listenings": get_listenings(),
        "music_duration": get_music_duration(),
    }


def get_users():
    return User.objects.count()


def get_listenings():
    return Listening.objects.count()


def get_track_favorites():
    return TrackFavorite.objects.count()


def get_tracks():
    return models.Track.objects.count()


def get_albums():
    return models.Album.objects.count()


def get_artists():
    return models.Artist.objects.count()


def get_music_duration():
    seconds = models.Upload.objects.aggregate(d=Sum("duration"))["d"]
    if seconds:
        return seconds / 3600
    return 0