From 0e35a191678cc7e9a6814edf1a6f0beb4199e512 Mon Sep 17 00:00:00 2001 From: MingxuanGame Date: Sun, 17 Aug 2025 17:18:05 +0000 Subject: [PATCH] fix(beatmap): do not add to database when existed --- app/database/beatmap.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/app/database/beatmap.py b/app/database/beatmap.py index 36ca577..8e40549 100644 --- a/app/database/beatmap.py +++ b/app/database/beatmap.py @@ -14,7 +14,7 @@ from .beatmapset import Beatmapset, BeatmapsetResp from redis.asyncio import Redis from sqlalchemy import Column, DateTime -from sqlmodel import VARCHAR, Field, Relationship, SQLModel, col, func, select +from sqlmodel import VARCHAR, Field, Relationship, SQLModel, col, exists, func, select from sqlmodel.ext.asyncio.session import AsyncSession if TYPE_CHECKING: @@ -80,8 +80,11 @@ class Beatmap(BeatmapBase, table=True): "beatmap_status": BeatmapRankStatus(resp.ranked), } ) - session.add(beatmap) - await session.commit() + if not ( + await session.exec(select(exists()).where(Beatmap.id == resp.id)) + ).first(): + session.add(beatmap) + await session.commit() beatmap = ( await session.exec(select(Beatmap).where(Beatmap.id == resp.id)) ).first() @@ -106,7 +109,10 @@ class Beatmap(BeatmapBase, table=True): "beatmap_status": BeatmapRankStatus(resp.ranked), } ) - session.add(beatmap) + if not ( + await session.exec(select(exists()).where(Beatmap.id == resp.id)) + ).first(): + session.add(beatmap) beatmaps.append(beatmap) await session.commit() return beatmaps