forked from Hay1tsme/artemis
add Kaleidx Scope Support
This commit is contained in:
@ -282,6 +282,12 @@ class Mai2DX(Mai2Base):
|
|||||||
for intimate in upsert["userIntimateList"]:
|
for intimate in upsert["userIntimateList"]:
|
||||||
await self.data.profile.put_intimacy(user_id, intimate["partnerId"], intimate["intimateLevel"], intimate["intimateCountRewarded"])
|
await self.data.profile.put_intimacy(user_id, intimate["partnerId"], intimate["intimateLevel"], intimate["intimateCountRewarded"])
|
||||||
|
|
||||||
|
# added in PRiSM
|
||||||
|
if "userKaleidxScopeList" in upsert and len(upsert["userKaleidxScopeList"]) > 0:
|
||||||
|
for kaleidx_scope in upsert["userKaleidxScopeList"]:
|
||||||
|
await self.data.score.put_user_kaleidx_scope(user_id, kaleidx_scope)
|
||||||
|
|
||||||
|
|
||||||
return {"returnCode": 1, "apiName": "UpsertUserAllApi"}
|
return {"returnCode": 1, "apiName": "UpsertUserAllApi"}
|
||||||
|
|
||||||
async def handle_get_user_data_api_request(self, data: Dict) -> Dict:
|
async def handle_get_user_data_api_request(self, data: Dict) -> Dict:
|
||||||
|
@ -4,6 +4,8 @@ from core.config import CoreConfig
|
|||||||
from titles.mai2.buddiesplus import Mai2BuddiesPlus
|
from titles.mai2.buddiesplus import Mai2BuddiesPlus
|
||||||
from titles.mai2.const import Mai2Constants
|
from titles.mai2.const import Mai2Constants
|
||||||
from titles.mai2.config import Mai2Config
|
from titles.mai2.config import Mai2Config
|
||||||
|
from titles.mai2.schema.score import kaleidx_scope
|
||||||
|
|
||||||
|
|
||||||
class Mai2Prism(Mai2BuddiesPlus):
|
class Mai2Prism(Mai2BuddiesPlus):
|
||||||
def __init__(self, cfg: CoreConfig, game_cfg: Mai2Config) -> None:
|
def __init__(self, cfg: CoreConfig, game_cfg: Mai2Config) -> None:
|
||||||
@ -48,10 +50,18 @@ class Mai2Prism(Mai2BuddiesPlus):
|
|||||||
}
|
}
|
||||||
|
|
||||||
async def handle_get_user_kaleidx_scope_api_request(self, data: Dict) -> Dict:
|
async def handle_get_user_kaleidx_scope_api_request(self, data: Dict) -> Dict:
|
||||||
user_id = data["userId"]
|
kaleidx_scope = await self.data.score.get_user_kaleidx_scope_list(data["userId"])
|
||||||
|
|
||||||
|
if kaleidx_scope is None:
|
||||||
|
return {"userId": data["userId"], "userKaleidxScopeList":[]}
|
||||||
|
|
||||||
|
kaleidx_scope_list = []
|
||||||
|
for kaleidx_scope_data in kaleidx_scope:
|
||||||
|
tmp = kaleidx_scope_data._asdict()
|
||||||
|
tmp.pop("user")
|
||||||
|
tmp.pop("id")
|
||||||
|
kaleidx_scope_list.append(tmp)
|
||||||
return {
|
return {
|
||||||
"userId": user_id,
|
"userId": data["userId"],
|
||||||
"userKaleidxScopeList": []
|
"userKaleidxScopeList": kaleidx_scope_list
|
||||||
}
|
}
|
@ -1,3 +1,4 @@
|
|||||||
|
from configparser import Interpolation
|
||||||
from typing import Dict, List, Optional
|
from typing import Dict, List, Optional
|
||||||
|
|
||||||
from sqlalchemy import Column, Table, UniqueConstraint, and_
|
from sqlalchemy import Column, Table, UniqueConstraint, and_
|
||||||
@ -174,6 +175,34 @@ playlog_2p = Table(
|
|||||||
mysql_charset="utf8mb4",
|
mysql_charset="utf8mb4",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
kaleidx_scope = Table(
|
||||||
|
"mai2_score_kaleidx_scope",
|
||||||
|
metadata,
|
||||||
|
Column("id", Integer, primary_key=True, nullable=False),
|
||||||
|
Column(
|
||||||
|
"user",
|
||||||
|
ForeignKey("aime_user.id", ondelete="cascade", onupdate="cascade"),
|
||||||
|
nullable=False,
|
||||||
|
),
|
||||||
|
Column("gateId", Integer),
|
||||||
|
Column("isGateFound", Boolean),
|
||||||
|
Column("isKeyFound", Boolean),
|
||||||
|
Column("isClear", Boolean),
|
||||||
|
Column("totalRestLife", Integer),
|
||||||
|
Column("totalAchievement", Integer),
|
||||||
|
Column("totalDeluxscore", Integer),
|
||||||
|
Column("bestAchievement", Integer),
|
||||||
|
Column("bestDeluxscore", Integer),
|
||||||
|
Column("bestAchievementDate", String(25)),
|
||||||
|
Column("bestDeluxscoreDate", String(25)),
|
||||||
|
Column("playCount", Integer),
|
||||||
|
Column("clearDate", String(25)),
|
||||||
|
Column("lastPlayDate", String(25)),
|
||||||
|
Column("isInfoWatched", Boolean),
|
||||||
|
UniqueConstraint("user", "gateId", name="mai2_score_best_uk"),
|
||||||
|
mysql_charset="utf8mb4"
|
||||||
|
)
|
||||||
|
|
||||||
course = Table(
|
course = Table(
|
||||||
"mai2_score_course",
|
"mai2_score_course",
|
||||||
metadata,
|
metadata,
|
||||||
@ -451,3 +480,22 @@ class Mai2ScoreData(BaseData):
|
|||||||
self.logger.warning(f"aime_id {aime_id} has no playlog ")
|
self.logger.warning(f"aime_id {aime_id} has no playlog ")
|
||||||
return None
|
return None
|
||||||
return result.scalar()
|
return result.scalar()
|
||||||
|
|
||||||
|
async def get_user_kaleidx_scope_list(self, user_id: int) -> Optional[List[Row]]:
|
||||||
|
sql = kaleidx_scope.select(kaleidx_scope.c.user == user_id)
|
||||||
|
result = await self.execute(sql)
|
||||||
|
if result is None:
|
||||||
|
return None
|
||||||
|
return result.fetchall()
|
||||||
|
|
||||||
|
async def put_user_kaleidx_scope(self, user_id: int, user_kaleidx_scope_data: Dict) -> Optional[int]:
|
||||||
|
user_kaleidx_scope_data["user"] = user_id
|
||||||
|
sql = insert(kaleidx_scope).values(**user_kaleidx_scope_data)
|
||||||
|
|
||||||
|
conflict = sql.on_duplicate_key_update(**user_kaleidx_scope_data)
|
||||||
|
|
||||||
|
result = await self.execute(conflict)
|
||||||
|
if result is None:
|
||||||
|
self.logger.error(f"put_user_kaleidx_scope: Failed to insert! user_id {user_id}")
|
||||||
|
return None
|
||||||
|
return result.lastrowid
|
Reference in New Issue
Block a user