48 lines
1.7 KiB
Python
48 lines
1.7 KiB
Python
from __future__ import annotations
|
|
|
|
from app.config import settings
|
|
from app.database.lazer_user import User
|
|
from app.database.statistics import UserStatistics
|
|
from app.dependencies.database import engine
|
|
from app.models.score import GameMode
|
|
|
|
from sqlalchemy import exists
|
|
from sqlmodel import select
|
|
from sqlmodel.ext.asyncio.session import AsyncSession
|
|
|
|
|
|
async def create_rx_statistics():
|
|
async with AsyncSession(engine) as session:
|
|
users = (await session.exec(select(User.id))).all()
|
|
for i in users:
|
|
if settings.enable_rx:
|
|
for mode in (
|
|
GameMode.OSURX,
|
|
GameMode.TAIKORX,
|
|
GameMode.FRUITSRX,
|
|
):
|
|
is_exist = (
|
|
await session.exec(
|
|
select(exists()).where(
|
|
UserStatistics.user_id == i,
|
|
UserStatistics.mode == mode,
|
|
)
|
|
)
|
|
).first()
|
|
if not is_exist:
|
|
statistics_rx = UserStatistics(mode=mode, user_id=i)
|
|
session.add(statistics_rx)
|
|
if settings.enable_ap:
|
|
is_exist = (
|
|
await session.exec(
|
|
select(exists()).where(
|
|
UserStatistics.user_id == i,
|
|
UserStatistics.mode == GameMode.OSUAP,
|
|
)
|
|
)
|
|
).first()
|
|
if not is_exist:
|
|
statistics_ap = UserStatistics(mode=GameMode.OSUAP, user_id=i)
|
|
session.add(statistics_ap)
|
|
await session.commit()
|