fix 数据库会话管理

This commit is contained in:
jxxghp
2023-08-16 10:22:45 +08:00
parent b086bbf015
commit da93328d50
29 changed files with 255 additions and 172 deletions

View File

@ -7,6 +7,7 @@ from typing import Optional, Any, Tuple, List, Set, Union, Dict
from qbittorrentapi import TorrentFilesList
from ruamel.yaml import CommentedMap
from sqlalchemy.orm import Session
from transmission_rpc import File
from app.core.config import settings
@ -27,10 +28,11 @@ class ChainBase(metaclass=ABCMeta):
处理链基类
"""
def __init__(self):
def __init__(self, db: Session = None):
"""
公共初始化
"""
self._db = db
self.modulemanager = ModuleManager()
self.eventmanager = EventManager()

View File

@ -3,6 +3,7 @@ from typing import Tuple, Optional, Union
from urllib.parse import urljoin
from lxml import etree
from sqlalchemy.orm import Session
from app.chain import ChainBase
from app.chain.site import SiteChain
@ -22,12 +23,12 @@ class CookieCloudChain(ChainBase):
CookieCloud处理链
"""
def __init__(self):
super().__init__()
self.siteoper = SiteOper()
self.siteiconoper = SiteIconOper()
def __init__(self, db: Session = None):
super().__init__(db)
self.siteoper = SiteOper(self._db)
self.siteiconoper = SiteIconOper(self._db)
self.siteshelper = SitesHelper()
self.sitechain = SiteChain()
self.sitechain = SiteChain(self._db)
self.message = MessageHelper()
self.cookiecloud = CookieCloudHelper(
server=settings.COOKIECLOUD_HOST,

View File

@ -2,6 +2,8 @@ import re
from pathlib import Path
from typing import List, Optional, Tuple, Set, Dict, Union
from sqlalchemy.orm import Session
from app.chain import ChainBase
from app.core.config import settings
from app.core.context import MediaInfo, TorrentInfo, Context
@ -20,11 +22,11 @@ class DownloadChain(ChainBase):
下载处理链
"""
def __init__(self):
super().__init__()
def __init__(self, db: Session = None):
super().__init__(db)
self.torrent = TorrentHelper()
self.downloadhis = DownloadHistoryOper()
self.mediaserver = MediaServerOper()
self.downloadhis = DownloadHistoryOper(self._db)
self.mediaserver = MediaServerOper(self._db)
def post_download_message(self, meta: MetaBase, mediainfo: MediaInfo, torrent: TorrentInfo,
channel: MessageChannel = None,

View File

@ -2,6 +2,8 @@ import json
import threading
from typing import List, Union, Generator
from sqlalchemy.orm import Session
from app import schemas
from app.chain import ChainBase
from app.core.config import settings
@ -17,9 +19,9 @@ class MediaServerChain(ChainBase):
媒体服务器处理链
"""
def __init__(self):
super().__init__()
self.mediaserverdb = MediaServerOper()
def __init__(self, db: Session = None):
super().__init__(db)
self.mediaserverdb = MediaServerOper(db)
def librarys(self) -> List[schemas.MediaServerLibrary]:
"""

View File

@ -27,12 +27,12 @@ class MessageChain(ChainBase):
# 每页数据量
_page_size: int = 8
def __init__(self):
super().__init__()
self.downloadchain = DownloadChain()
self.subscribechain = SubscribeChain()
self.searchchain = SearchChain()
self.medtachain = MediaChain()
def __init__(self, db: Session = None):
super().__init__(db)
self.downloadchain = DownloadChain(self._db)
self.subscribechain = SubscribeChain(self._db)
self.searchchain = SearchChain(self._db)
self.medtachain = MediaChain(self._db)
self.torrent = TorrentHelper()
self.eventmanager = EventManager()
self.torrenthelper = TorrentHelper()

View File

@ -4,6 +4,8 @@ import time
from datetime import datetime
from typing import Tuple, Optional
from sqlalchemy.orm import Session
from app.chain import ChainBase
from app.chain.download import DownloadChain
from app.core.config import settings
@ -25,12 +27,12 @@ class RssChain(ChainBase):
RSS处理链
"""
def __init__(self):
super().__init__()
self.rssoper = RssOper()
def __init__(self, db: Session = None):
super().__init__(db)
self.rssoper = RssOper(self._db)
self.sites = SitesHelper()
self.systemconfig = SystemConfigOper()
self.downloadchain = DownloadChain()
self.systemconfig = SystemConfigOper(self._db)
self.downloadchain = DownloadChain(self._db)
self.message = MessageHelper()
def add(self, title: str, year: str,

View File

@ -4,6 +4,8 @@ from datetime import datetime
from typing import Dict
from typing import List, Optional
from sqlalchemy.orm import Session
from app.chain import ChainBase
from app.core.context import Context
from app.core.context import MediaInfo, TorrentInfo
@ -23,11 +25,11 @@ class SearchChain(ChainBase):
站点资源搜索处理链
"""
def __init__(self):
super().__init__()
def __init__(self, db: Session = None):
super().__init__(db)
self.siteshelper = SitesHelper()
self.progress = ProgressHelper()
self.systemconfig = SystemConfigOper()
self.systemconfig = SystemConfigOper(self._db)
self.torrenthelper = TorrentHelper()
def search_by_tmdbid(self, tmdbid: int, mtype: MediaType = None) -> List[Context]:

View File

@ -1,5 +1,7 @@
from typing import Union, Tuple
from sqlalchemy.orm import Session
from app.chain import ChainBase
from app.core.config import settings
from app.db.models.site import Site
@ -20,9 +22,9 @@ class SiteChain(ChainBase):
站点管理处理链
"""
def __init__(self):
super().__init__()
self.siteoper = SiteOper()
def __init__(self, db: Session = None):
super().__init__(db)
self.siteoper = SiteOper(self._db)
self.cookiehelper = CookieHelper()
self.message = MessageHelper()

View File

@ -3,6 +3,8 @@ import re
from datetime import datetime
from typing import Dict, List, Optional, Union, Tuple
from requests import Session
from app.chain import ChainBase
from app.chain.download import DownloadChain
from app.chain.search import SearchChain
@ -27,14 +29,14 @@ class SubscribeChain(ChainBase):
_cache_file = "__torrents_cache__"
def __init__(self):
super().__init__()
self.downloadchain = DownloadChain()
self.searchchain = SearchChain()
self.subscribehelper = SubscribeOper()
def __init__(self, db: Session = None):
super().__init__(db)
self.downloadchain = DownloadChain(self._db)
self.searchchain = SearchChain(self._db)
self.subscribehelper = SubscribeOper(self._db)
self.siteshelper = SitesHelper()
self.message = MessageHelper()
self.systemconfig = SystemConfigOper()
self.systemconfig = SystemConfigOper(self._db)
def add(self, title: str, year: str,
mtype: MediaType = None,

View File

@ -5,6 +5,8 @@ import threading
from pathlib import Path
from typing import List, Optional, Union
from sqlalchemy.orm import Session
from app.chain import ChainBase
from app.core.config import settings
from app.core.context import MediaInfo
@ -28,10 +30,10 @@ class TransferChain(ChainBase):
文件转移处理链
"""
def __init__(self):
super().__init__()
self.downloadhis = DownloadHistoryOper()
self.transferhis = TransferHistoryOper()
def __init__(self, db: Session = None):
super().__init__(db)
self.downloadhis = DownloadHistoryOper(self._db)
self.transferhis = TransferHistoryOper(self._db)
self.progress = ProgressHelper()
def process(self, arg_str: str = None, channel: MessageChannel = None, userid: Union[str, int] = None) -> bool: