53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
from typing import Optional, Dict, List
|
|
from sqlalchemy import Table, Column, UniqueConstraint, PrimaryKeyConstraint, and_, case
|
|
from sqlalchemy.types import Integer, String, TIMESTAMP, Boolean, JSON
|
|
from sqlalchemy.schema import ForeignKey
|
|
from sqlalchemy.sql import func, select, update, delete
|
|
from sqlalchemy.engine import Row
|
|
from sqlalchemy.dialects.mysql import insert
|
|
|
|
from core.data.schema import BaseData, metadata
|
|
|
|
# Pokken sends depressingly little match data...
|
|
match_data = Table(
|
|
"pokken_match_data",
|
|
metadata,
|
|
Column("id", Integer, primary_key=True, nullable=False),
|
|
Column(
|
|
"user",
|
|
ForeignKey("aime_user.id", ondelete="cascade", onupdate="cascade"),
|
|
nullable=False,
|
|
),
|
|
Column("num_games", Integer),
|
|
Column("play_modes", JSON),
|
|
Column("results", JSON),
|
|
Column("ex_ko_num", Integer),
|
|
Column("wko_num", Integer),
|
|
Column("timeup_win_num", Integer),
|
|
Column("cool_ko_num", Integer),
|
|
Column("perfect_ko_num", Integer),
|
|
Column("use_navi", Integer),
|
|
Column("use_navi_cloth", Integer),
|
|
Column("use_aid_skill", Integer),
|
|
Column("play_date", TIMESTAMP),
|
|
mysql_charset="utf8mb4",
|
|
)
|
|
|
|
|
|
class PokkenMatchData(BaseData):
|
|
"""
|
|
Match logs
|
|
"""
|
|
|
|
async def save_match(self, user_id: int, match_data: Dict) -> Optional[int]:
|
|
pass
|
|
|
|
async def get_match(self, match_id: int) -> Optional[Row]:
|
|
pass
|
|
|
|
async def get_matches_by_user(self, user_id: int) -> Optional[List[Row]]:
|
|
pass
|
|
|
|
async def get_matches(self, limit: int = 20) -> Optional[List[Row]]:
|
|
pass
|