feat: handy methods under Database

This commit is contained in:
283375 2023-08-28 00:15:34 +08:00
parent 54851549d5
commit b180976284
Signed by: 283375
SSH Key Fingerprint: SHA256:UcX0qg6ZOSDOeieKPGokA5h7soykG61nz2uxuQgVLSk

View File

@ -1,5 +1,5 @@
import logging import logging
from typing import Optional from typing import Optional, Union
from sqlalchemy import Engine, inspect, select from sqlalchemy import Engine, inspect, select
from sqlalchemy.orm import sessionmaker from sqlalchemy.orm import sessionmaker
@ -84,3 +84,25 @@ class Database(metaclass=Singleton):
] ]
) )
return all(inspect(self.engine).has_table(t) for t in expect_tables) return all(inspect(self.engine).has_table(t) for t in expect_tables)
def version(self) -> Union[int, None]:
stmt = select(Property).where(Property.key == "version")
with self.sessionmaker() as session:
result = session.scalar(stmt)
return None if result is None else int(result.value)
def get_packs(self):
stmt = select(Pack)
with self.sessionmaker() as session:
results = list(session.scalars(stmt))
return results
def get_charts_in_pack(self, pack: str):
stmt = (
select(ChartInfo)
.join(Song, (Song.id == ChartInfo.song_id))
.where(Song.set == pack)
)
with self.sessionmaker() as session:
results = list(session.scalars(stmt))
return results