mirror of
https://github.com/EstrellaXD/Auto_Bangumi.git
synced 2026-04-14 18:41:04 +08:00
43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
from sqlmodel import Session, SQLModel
|
|
|
|
from module.models import Bangumi, User
|
|
|
|
from .bangumi import BangumiDatabase
|
|
from .engine import engine as e
|
|
from .rss import RSSDatabase
|
|
from .torrent import TorrentDatabase
|
|
from .user import UserDatabase
|
|
|
|
|
|
class Database(Session):
|
|
def __init__(self, engine=e):
|
|
self.engine = engine
|
|
super().__init__(engine)
|
|
self.rss = RSSDatabase(self)
|
|
self.torrent = TorrentDatabase(self)
|
|
self.bangumi = BangumiDatabase(self)
|
|
self.user = UserDatabase(self)
|
|
|
|
def create_table(self):
|
|
SQLModel.metadata.create_all(self.engine)
|
|
|
|
def drop_table(self):
|
|
SQLModel.metadata.drop_all(self.engine)
|
|
|
|
def migrate(self):
|
|
# Run migration online
|
|
bangumi_data = self.bangumi.search_all()
|
|
user_data = self.exec("SELECT * FROM user").all()
|
|
readd_bangumi = []
|
|
for bangumi in bangumi_data:
|
|
dict_data = bangumi.dict()
|
|
del dict_data["id"]
|
|
readd_bangumi.append(Bangumi(**dict_data))
|
|
self.drop_table()
|
|
self.create_table()
|
|
self.commit()
|
|
bangumi_data = self.bangumi.search_all()
|
|
self.bangumi.add_all(readd_bangumi)
|
|
self.add(User(**user_data[0]))
|
|
self.commit()
|