Skip to content

Commit

Permalink
sqlalchemy2
Browse files Browse the repository at this point in the history
  • Loading branch information
MeetWq committed Mar 10, 2023
1 parent 31e3e5d commit 1f69a66
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 41 deletions.
10 changes: 5 additions & 5 deletions nonebot_plugin_cchess/game.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import uuid
from sqlmodel import select
from datetime import datetime
from typing import List, Optional
from typing import Optional

from nonebot import get_driver
from nonebot_plugin_datastore import create_session
from sqlalchemy import select

from .move import Move
from .board import Board
from .config import Config
from .model import GameRecord
from .engine import UCCIEngine
from .model import GameRecord
from .move import Move

cchess_config = Config.parse_obj(get_driver().config.dict())

Expand Down Expand Up @@ -120,7 +120,7 @@ async def load_player(
GameRecord.session_id == session_id, GameRecord.is_game_over == False
)
async with create_session() as session:
records: List[GameRecord] = (await session.exec(statement)).all() # type: ignore
records = (await session.scalars(statement)).all()
if not records:
return None
record = sorted(records, key=lambda x: x.update_time)[-1]
Expand Down
26 changes: 9 additions & 17 deletions nonebot_plugin_cchess/migrations/2c0cbe227dd9_init_db.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,8 @@
Create Date: 2023-01-30 20:31:06.726918
"""
from alembic import op
import sqlalchemy as sa
import sqlmodel

from alembic import op

# revision identifiers, used by Alembic.
revision = "2c0cbe227dd9"
Expand All @@ -22,26 +20,20 @@ def upgrade() -> None:
op.create_table(
"nonebot_plugin_cchess_gamerecord",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("game_id", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
sa.Column("session_id", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
sa.Column("game_id", sa.String(), nullable=False),
sa.Column("session_id", sa.String(), nullable=False),
sa.Column("start_time", sa.DateTime(), nullable=False),
sa.Column("update_time", sa.DateTime(), nullable=False),
sa.Column("player_red_id", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
sa.Column(
"player_red_name", sqlmodel.sql.sqltypes.AutoString(), nullable=False
),
sa.Column("player_red_id", sa.String(), nullable=False),
sa.Column("player_red_name", sa.String(), nullable=False),
sa.Column("player_red_is_ai", sa.Boolean(), nullable=False),
sa.Column("player_red_level", sa.Integer(), nullable=False),
sa.Column(
"player_black_id", sqlmodel.sql.sqltypes.AutoString(), nullable=False
),
sa.Column(
"player_black_name", sqlmodel.sql.sqltypes.AutoString(), nullable=False
),
sa.Column("player_black_id", sa.String(), nullable=False),
sa.Column("player_black_name", sa.String(), nullable=False),
sa.Column("player_black_is_ai", sa.Boolean(), nullable=False),
sa.Column("player_black_level", sa.Integer(), nullable=False),
sa.Column("start_fen", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
sa.Column("moves", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
sa.Column("start_fen", sa.String(), nullable=False),
sa.Column("moves", sa.String(), nullable=False),
sa.Column("is_game_over", sa.Boolean(), nullable=False),
sa.PrimaryKeyConstraint("id"),
)
Expand Down
38 changes: 19 additions & 19 deletions nonebot_plugin_cchess/model.py
Original file line number Diff line number Diff line change
@@ -1,41 +1,41 @@
from sqlmodel import Field
from typing import Optional
from datetime import datetime

from nonebot_plugin_datastore import get_plugin_data
from sqlalchemy import Boolean, DateTime, String, Text
from sqlalchemy.orm import Mapped, mapped_column

Model = get_plugin_data().Model


class GameRecord(Model, table=True):
class GameRecord(Model):
__table_args__ = {"extend_existing": True}

id: Optional[int] = Field(default=None, primary_key=True)
game_id: str
session_id: str = ""
start_time: datetime = datetime.now()
id: Mapped[int] = mapped_column(primary_key=True)
game_id: Mapped[str] = mapped_column(String(128))
session_id: Mapped[str] = mapped_column(String(128))
start_time: Mapped[datetime] = mapped_column(DateTime, default=datetime.now())
""" 游戏开始时间 """
update_time: datetime = datetime.now()
update_time: Mapped[datetime] = mapped_column(DateTime, default=datetime.now())
""" 游戏更新时间 """
player_red_id: str = ""
player_red_id: Mapped[str] = mapped_column(String(64), default="")
""" 红方id """
player_red_name: str = ""
player_red_name: Mapped[str] = mapped_column(Text, default="")
""" 红方名字 """
player_red_is_ai: bool = False
player_red_is_ai: Mapped[bool] = mapped_column(Boolean, default=False)
""" 红方是否为AI """
player_red_level: int = 0
player_red_level: Mapped[int] = mapped_column(default=0)
""" 红方等级 """
player_black_id: str = ""
player_black_id: Mapped[str] = mapped_column(String(64), default="")
""" 黑方id """
player_black_name: str = ""
player_black_name: Mapped[str] = mapped_column(Text, default="")
""" 黑方名字 """
player_black_is_ai: bool = False
player_black_is_ai: Mapped[bool] = mapped_column(Boolean, default=False)
""" 黑方是否为AI """
player_black_level: int = 0
player_black_level: Mapped[int] = mapped_column(default=0)
""" 黑方等级 """
start_fen: str = ""
start_fen: Mapped[str] = mapped_column(Text, default="")
""" 起始局面FEN字符串 """
moves: str = ""
moves: Mapped[str] = mapped_column(Text, default="")
""" 所有移动,ucci形式,以空格分隔 """
is_game_over: bool = False
is_game_over: Mapped[bool] = mapped_column(default=False)
""" 游戏是否已结束 """

0 comments on commit 1f69a66

Please sign in to comment.