refactor: package structure

This commit is contained in:
283375 2023-08-24 23:15:16 +08:00
parent bee8268dd2
commit 1d3d4277f6
Signed by: 283375
SSH Key Fingerprint: SHA256:UcX0qg6ZOSDOeieKPGokA5h7soykG61nz2uxuQgVLSk
4 changed files with 1 additions and 177 deletions

View File

@ -1,176 +0,0 @@
from dataclasses import asdict, dataclass
from typing import Optional
@dataclass
class DbChartRow:
song_id: str
rating_class: int
name_en: str
name_jp: Optional[str]
artist: str
bpm: str
bpm_base: float
package_id: str
time: Optional[int]
side: int
world_unlock: bool
remote_download: Optional[bool]
bg: str
date: int
version: str
difficulty: int
rating: int
note: int
chart_designer: Optional[str]
jacket_designer: Optional[str]
jacket_override: bool
audio_override: bool
@dataclass(kw_only=True)
class Chart:
song_id: str
rating_class: int
name_en: str
name_jp: Optional[str]
artist: str
bpm: str
bpm_base: float
package_id: str
time: Optional[int]
side: int
world_unlock: bool
remote_download: Optional[bool]
bg: str
date: int
version: str
difficulty: int
rating: int
note: int
chart_designer: Optional[str]
jacket_designer: Optional[str]
jacket_override: bool
audio_override: bool
@classmethod
def from_db_row(cls, row: DbChartRow):
return cls(**asdict(row))
@dataclass
class DbAliasRow:
song_id: str
alias: str
@dataclass(kw_only=True)
class Alias:
song_id: str
alias: str
@classmethod
def from_db_row(cls, row: DbAliasRow):
return cls(song_id=row.song_id, alias=row.alias)
@dataclass
class DbPackageRow:
package_id: str
name: str
@dataclass(kw_only=True)
class Package:
id: str
name: str
@classmethod
def from_db_row(cls, row: DbPackageRow):
return cls(id=row.package_id, name=row.name)
@dataclass
class DbScoreRow:
id: int
song_id: str
rating_class: int
score: int
pure: Optional[int]
far: Optional[int]
lost: Optional[int]
time: int
max_recall: Optional[int]
clear_type: Optional[int]
@dataclass(kw_only=True)
class Score:
id: int
song_id: str
rating_class: int
score: int
pure: Optional[int]
far: Optional[int]
lost: Optional[int]
time: int
max_recall: Optional[int]
clear_type: Optional[int]
@classmethod
def from_db_row(cls, row: DbScoreRow):
return cls(**asdict(row))
def to_db_row(self):
keys = list(self.__dataclass_fields__)
values = [self.__getattribute__(key) for key in keys]
return DbScoreRow(*values)
@dataclass(kw_only=True)
class ScoreInsert:
song_id: str
rating_class: int
score: int
time: int
pure: Optional[int] = None
far: Optional[int] = None
lost: Optional[int] = None
max_recall: Optional[int] = None
clear_type: Optional[int] = None
@dataclass
class DbCalculatedRow:
id: int
song_id: str
rating_class: int
score: int
pure: Optional[int]
far: Optional[int]
lost: Optional[int]
time: int
rating: int
note: int
pure_small: Optional[int]
potential: float
@dataclass(kw_only=True)
class Calculated:
id: int
song_id: str
rating_class: int
score: int
pure: Optional[int]
far: Optional[int]
lost: Optional[int]
time: int
rating: int
note: int
pure_small: Optional[int]
potential: float
@classmethod
def from_db_row(cls, row: DbCalculatedRow):
return cls(**asdict(row))

View File

View File

@ -4,7 +4,7 @@ from sqlalchemy import TEXT, case, func, inspect, select
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
from sqlalchemy_utils import create_view
from .models_songs import Chart, ChartInfo
from .songs import Chart, ChartInfo
class ScoresBase(DeclarativeBase):