Newer
Older
import semver
from . import db
@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"]},
"downloads": {"total": raw["usage_downloads_total"]},
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
},
"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()
data.pop("name", None)
data.pop("blocked", None)
if "time" in data:
data["time"] = data["time"].isoformat()
name = data.pop("domain")
return {
"name": name,
"node_name": data.pop("node_name"),
"first_seen": data.pop("first_seen").isoformat(),
"lastCheck": data,
}