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"]}
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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
68
69
70
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}