Skip to content
Snippets Groups Projects
serializers.py 2.23 KiB
Newer Older
  • Learn to ignore specific revisions
  • 
    @db.dict_cursor
    async def create_domain(cursor, data):
    
        sql = "INSERT INTO domains (name) VALUES (%s) ON CONFLICT DO NOTHING RETURNING *"
    
        await cursor.execute(sql, [data["name"]])
        domain = await cursor.fetchone()
        return domain
    
    
    
    def serialize_domain(data):
        return {"name": data["name"]}
    
    
    
    def serialize_check(raw):
        data = {
            "up": raw["up"],
            "time": raw["time"].isoformat(),
            "usage": {
                "users": {
                    "total": raw["usage_users_total"],
                    "activeHalfyear": raw["usage_users_active_half_year"],
                    "activeMonth": raw["usage_users_active_month"],
                },
                "listenings": {"total": raw["usage_listenings_total"]},
            },
            "library": {
                "music": {"hours": raw["library_music_hours"]},
                "tracks": {"total": raw["library_tracks_total"]},
                "albums": {"total": raw["library_albums_total"]},
                "artists": {"total": raw["library_artists_total"]},
            },
            "settings": {
                "federationEnabled": raw["federation_enabled"],
                "openRegistrations": raw["open_registrations"],
                "anonymousCanListen": raw["anonymous_can_listen"],
            },
            "software": {
                "name": raw["software_name"],
                "versionDetail": {
                    "major": raw["software_version_major"],
                    "minor": raw["software_version_minor"],
                    "patch": raw["software_version_patch"],
                    "prerelease": raw["software_prerelease"],
                    "build": raw["software_build"],
                },
            },
        }
        try:
            data["software"]["version"] = semver.format_version(
                major=raw["software_version_major"],
                minor=raw["software_version_minor"],
                patch=raw["software_version_patch"],
                prerelease=raw["software_prerelease"],
                build=raw["software_build"],
            )
        except (TypeError, ValueError):
            data["software"]["version"] = ""
        return data
    
    
    def serialize_domain_from_check(data):
        data = data.copy()
        if "time" in data:
            data["time"] = data["time"].isoformat()
        name = data.pop("domain")
        return {"name": name, "lastCheck": data}