No SQLModel

This commit is contained in:
ciomek committed 2026-09-04 23:41:35 +02:00
1 parent 5f0e8c11b4
commit 9964fbf044
16 files changed
+91 -84

No files matched your search

+20 -13
View File
@@ -1,22 +1,29 @@
from sqlmodel import SQLModel, Field, Relationship
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from loon.web.db import Base
class MinecraftUser(SQLModel, table=True):
id: int = Field(default=None, primary_key=True)
uuid: str = Field(unique=True)
username: str
user: "User" = Relationship(back_populates="minecraft_user")
class MinecraftUser(Base):
__tablename__ = "minecraftuser"
id: Mapped[int] = mapped_column(primary_key=True)
uuid: Mapped[str] = mapped_column(unique=True)
username: Mapped[str]
user: Mapped["User"] = relationship(back_populates="minecraft_user")
class User(SQLModel, table=True):
id: int = Field(default=None, primary_key=True)
class User(Base):
__tablename__ = "user"
minecraft_user_id: int = Field(foreign_key="minecraftuser.id", nullable=False, unique=True)
minecraft_user: MinecraftUser = Relationship(back_populates="user")
id: Mapped[int] = mapped_column(primary_key=True)
internal_username: str = Field(unique=True)
password: str
admin: bool = Field(default=False)
minecraft_user_id: Mapped[int] = mapped_column(ForeignKey("minecraftuser.id"), unique=True)
minecraft_user: Mapped[MinecraftUser] = relationship(back_populates="user")
internal_username: Mapped[str] = mapped_column(unique=True)
password: Mapped[str]
admin: Mapped[bool] = mapped_column(default=False)
@property
def uuid(self) -> str:
+4 -3
View File
@@ -1,6 +1,7 @@
import asyncio
from sqlmodel import Session, select
from sqlalchemy import select
from sqlalchemy.orm import Session
from loon.web.db import engine
from loon.web.users.models import MinecraftUser
@@ -10,9 +11,9 @@ def _sync_minecraft_users(players: list[dict]) -> list[MinecraftUser]:
players_by_uuid = {player["uuid"]: player["username"] for player in players}
with Session(engine) as session:
existing = session.exec(
existing = session.execute(
select(MinecraftUser).where(MinecraftUser.uuid.in_(players_by_uuid))
).all()
).scalars().all()
existing_by_uuid = {minecraft_user.uuid: minecraft_user for minecraft_user in existing}
new_users = []