refactor: external sources update

This commit is contained in:
2023-08-26 00:12:28 +08:00
parent 73fd563de6
commit de8efbeaf1
10 changed files with 274 additions and 63 deletions

View File

@ -0,0 +1,37 @@
import sqlite3
from typing import List
from sqlalchemy import Engine
from sqlalchemy.orm import Session
from ...models.songs import ChartInfo
class ArcsongDbParser:
def __init__(self, filepath):
self.filepath = filepath
def parse(self) -> List[ChartInfo]:
results = []
with sqlite3.connect(self.filepath) as conn:
cursor = conn.cursor()
arcsong_db_results = cursor.execute(
"SELECT song_id, rating_class, rating, note FROM charts"
)
for result in arcsong_db_results:
chart = ChartInfo(
song_id=result[0],
rating_class=result[1],
constant=result[2],
note=result[3] or None,
)
results.append(chart)
return results
def write_database(self, engine: Engine):
with Session(engine) as session:
results = self.parse()
for result in results:
session.merge(result)
session.commit()