More cleaning up.

Signed-off-by: Cliff Hill <xlorep@darkhelm.org>
This commit is contained in:
2024-04-23 08:16:27 -04:00
parent ce3c9740b1
commit ea0fdf37eb

View File

@@ -4,10 +4,8 @@ from datetime import datetime
from typing import Any
import env
import models
from aiologger import Logger
from models import Genre
from models import Statistics
from models import Track
from sqlalchemy.exc import SQLAlchemyError
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.ext.asyncio import create_async_engine
@@ -52,19 +50,19 @@ async def insert_or_update_track(track_data: dict[str, Any]) -> None:
async with async_session_maker() as session:
try:
async with session.begin():
genre = await session.get(Genre, track_data.get("genre_id"))
genre = await session.get(models.Genre, track_data.get("genre_id"))
if not genre:
genre = Genre(name=track_data["genre_name"])
genre = models.Genre(name=track_data["genre_name"])
session.add(genre)
await session.flush() # Ensures 'genre' is persisted and has an 'id'
track = await session.get(Track, track_data.get("id"))
track = await session.get(models.Track, track_data.get("id"))
if track:
for key, value in track_data.items():
setattr(track, key, value)
await logger.info(f"Updated track: {track.title}")
else:
track = Track(**track_data)
track = models.Track(**track_data)
session.add(track)
await logger.info(f"Inserted new track: {track.title}")
@@ -82,7 +80,11 @@ async def cleanup_unused_genres() -> None:
async with async_session_maker() as session:
try:
async with session.begin():
stmt = select(Genre).outerjoin(Track).filter(Track.id is None)
stmt = (
select(models.Genre)
.outerjoin(models.Track)
.filter(models.Track.id is None)
)
result = await session.execute(stmt)
unused_genres = result.scalars().all()
@@ -109,7 +111,7 @@ async def update_statistics_timestamps(operation: str) -> None:
try:
async with session.begin():
stats = await session.execute(
select(Statistics).order_by(Statistics.id)
select(models.Statistics).order_by(models.Statistics.id)
)
stats_obj = stats.scalars().first()