Merge pull request 'develop' (#9) from develop into prism_plus_support

Reviewed-on: https://gitea.tendokyu.moe/SoulGateKey/artemis/pulls/9
This commit is contained in:
SoulGateKey
2025-04-08 04:37:17 +00:00
19 changed files with 634 additions and 105 deletions

View File

@@ -728,10 +728,11 @@ class Mai2ItemData(BaseData):
# Do an anti-join with the mai2_item_item table to exclude any
# items the users have already owned.
if exclude_owned:
sql = sql.join(
sql = sql.outerjoin(
item,
(present.c.itemKind == item.c.itemKind)
& (present.c.itemId == item.c.itemId)
& (item.c.user == user_id)
)
condition &= (item.c.itemKind.is_(None) & item.c.itemId.is_(None))

View File

@@ -176,8 +176,8 @@ playlog_2p = Table(
mysql_charset="utf8mb4",
)
kaleidx_scope = Table(
"mai2_score_kaleidx_scope",
kaleidxscope = Table(
"mai2_score_kaleidxscope",
metadata,
Column("id", Integer, primary_key=True, nullable=False),
Column(
@@ -482,21 +482,21 @@ class Mai2ScoreData(BaseData):
return None
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)
async def get_user_kaleidxscope_list(self, user_id: int) -> Optional[List[Row]]:
sql = kaleidxscope.select(kaleidxscope.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)
async def put_user_kaleidxscope(self, user_id: int, user_kaleidxscope_data: Dict) -> Optional[int]:
user_kaleidxscope_data["user"] = user_id
sql = insert(kaleidxscope).values(**user_kaleidxscope_data)
conflict = sql.on_duplicate_key_update(**user_kaleidx_scope_data)
conflict = sql.on_duplicate_key_update(**user_kaleidxscope_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}")
self.logger.error(f"put_user_kaleidxscope: Failed to insert! user_id {user_id}")
return None
return result.lastrowid

View File

@@ -2,13 +2,27 @@ from core.data.schema.base import BaseData, metadata
from typing import Optional, Dict, List
from sqlalchemy import Table, Column, UniqueConstraint, PrimaryKeyConstraint, and_
from sqlalchemy.types import Integer, String, TIMESTAMP, Boolean, JSON, Float
from sqlalchemy.types import Integer, String, TIMESTAMP, Boolean, BIGINT, Float, INTEGER, BOOLEAN, VARCHAR
from sqlalchemy.schema import ForeignKey
from sqlalchemy.sql import func, select
from sqlalchemy.engine import Row
from sqlalchemy.dialects.mysql import insert
from datetime import datetime
opts = Table(
"mai2_static_opt",
metadata,
Column("id", BIGINT, primary_key=True, nullable=False),
Column("version", INTEGER, nullable=False),
Column("name", VARCHAR(4), nullable=False), # Axxx
Column("sequence", INTEGER, nullable=False), # release in DataConfig.xml
Column("cmReleaseVer", INTEGER, nullable=False),
Column("whenRead", TIMESTAMP, nullable=False, server_default=func.now()),
Column("isEnable", BOOLEAN, nullable=False, server_default="1"),
UniqueConstraint("version", "name", name="mai2_static_opt_uk"),
mysql_charset="utf8mb4",
)
event = Table(
"mai2_static_event",
metadata,
@@ -19,6 +33,7 @@ event = Table(
Column("name", String(255)),
Column("startDate", TIMESTAMP, server_default=func.now()),
Column("enabled", Boolean, server_default="1"),
Column("opt", ForeignKey("mai2_static_opt.id", ondelete="SET NULL", onupdate="cascade")),
UniqueConstraint("version", "eventId", "type", name="mai2_static_event_uk"),
mysql_charset="utf8mb4",
)
@@ -37,6 +52,7 @@ music = Table(
Column("addedVersion", String(255)),
Column("difficulty", Float),
Column("noteDesigner", String(255)),
Column("opt", ForeignKey("mai2_static_opt.id", ondelete="SET NULL", onupdate="cascade")),
UniqueConstraint("songId", "chartId", "version", name="mai2_static_music_uk"),
mysql_charset="utf8mb4",
)
@@ -51,6 +67,7 @@ ticket = Table(
Column("name", String(255)),
Column("price", Integer, server_default="1"),
Column("enabled", Boolean, server_default="1"),
Column("opt", ForeignKey("mai2_static_opt.id", ondelete="SET NULL", onupdate="cascade")),
UniqueConstraint("version", "ticketId", name="mai2_static_ticket_uk"),
mysql_charset="utf8mb4",
)
@@ -67,6 +84,7 @@ cards = Table(
Column("noticeStartDate", TIMESTAMP, server_default="2018-01-01 00:00:00.0"),
Column("noticeEndDate", TIMESTAMP, server_default="2038-01-01 00:00:00.0"),
Column("enabled", Boolean, server_default="1"),
Column("opt", ForeignKey("cm_static_opts.id", ondelete="SET NULL", onupdate="cascade")),
UniqueConstraint("version", "cardId", "cardName", name="mai2_static_cards_uk"),
mysql_charset="utf8mb4",
)