Make the database stuff more abstract

But only a bit
This commit is contained in:
Minecon724 2025-06-14 18:51:01 +02:00
commit 282d94bdd4
Signed by: Minecon724
GPG key ID: A02E6E67AB961189

View file

@ -21,6 +21,15 @@ async def get_playlists(connection: Connection, user_email: str) -> list[Playlis
p.index, p.title, p.description, p.privacy;
"""
return create_playlists(await connection.fetch(sql, user_email))
async def export_user(connection: Connection, user_email: str) -> InvidiousJsonDataExport:
data = await connection.fetchrow("SELECT subscriptions, watched, preferences FROM users WHERE email = $1", user_email)
playlists = await get_playlists(connection, user_email)
return create_json_data_export(data, playlists)
def create_playlists(rows):
return [
Playlist(
title=row['title'],
@ -28,17 +37,13 @@ async def get_playlists(connection: Connection, user_email: str) -> list[Playlis
privacy=PlaylistPrivacy[row['privacy']],
video_ids=row['video_ids'] or []
)
for row in await connection.fetch(sql, user_email)
for row in rows
]
async def export_user(connection: Connection, user_email: str) -> InvidiousJsonDataExport:
data = await connection.fetchrow("SELECT subscriptions, watched, preferences FROM users WHERE email = $1", user_email)
subscribed_channels_ids = data['subscriptions']
watched_videos_ids = data['watched']
user_preferences = json.loads(data['preferences'])
playlists = await get_playlists(connection, user_email)
def create_json_data_export(row, playlists):
subscribed_channels_ids = row['subscriptions']
watched_videos_ids = row['watched']
user_preferences = json.loads(row['preferences'])
data_export = InvidiousJsonDataExport(
subscriptions = [Channel(id=c_id) for c_id in subscribed_channels_ids],