No SQLModel
This commit is contained in:
1 parent
5f0e8c11b4
commit
9964fbf044
16 files changed
+91
-84
No files matched your search
+20
-13
@@ -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:
|
||||
|
||||
@@ -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 = []
|
||||
|
||||
Reference in new issue
Block a user