fix dboper
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
from sqlalchemy import create_engine, QueuePool
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from sqlalchemy.orm import sessionmaker, Session
|
||||
|
||||
from app.core.config import settings
|
||||
|
||||
@ -27,3 +27,15 @@ def get_db():
|
||||
finally:
|
||||
if db:
|
||||
db.close()
|
||||
|
||||
|
||||
class DbOper:
|
||||
|
||||
_db: Session = None
|
||||
|
||||
def __init__(self, _db=SessionLocal()):
|
||||
self._db = _db
|
||||
|
||||
def __del__(self):
|
||||
if self._db:
|
||||
self._db.close()
|
||||
|
@ -11,7 +11,6 @@ class Base:
|
||||
def create(self, db):
|
||||
db.add(self)
|
||||
db.commit()
|
||||
db.refresh(self)
|
||||
return self
|
||||
|
||||
@classmethod
|
||||
|
35
app/db/plugindata_oper.py
Normal file
35
app/db/plugindata_oper.py
Normal file
@ -0,0 +1,35 @@
|
||||
import json
|
||||
from typing import Any
|
||||
|
||||
from app.db import DbOper
|
||||
from app.db.models import Base
|
||||
from app.db.models.plugin import PluginData
|
||||
from app.utils.object import ObjectUtils
|
||||
|
||||
|
||||
class PluginDataOper(DbOper):
|
||||
"""
|
||||
插件数据管理
|
||||
"""
|
||||
|
||||
def save(self, plugin_id: str, key: str, value: Any) -> Base:
|
||||
"""
|
||||
保存插件数据
|
||||
:param plugin_id: 插件id
|
||||
:param key: 数据key
|
||||
:param value: 数据值
|
||||
"""
|
||||
if ObjectUtils.is_obj(value):
|
||||
value = json.dumps(value)
|
||||
plugin = PluginData(plugin_id=plugin_id, key=key, value=value)
|
||||
return plugin.create(self._db)
|
||||
|
||||
def get_data(self, key: str) -> Any:
|
||||
"""
|
||||
获取插件数据
|
||||
:param key: 数据key
|
||||
"""
|
||||
data = PluginData.get_plugin_data_by_key(self._db, self.__class__.__name__, key)
|
||||
if ObjectUtils.is_obj(data):
|
||||
return json.load(data)
|
||||
return data
|
@ -1,19 +1,13 @@
|
||||
from typing import Tuple, List
|
||||
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.db import SessionLocal
|
||||
from app.db import DbOper
|
||||
from app.db.models.site import Site
|
||||
|
||||
|
||||
class Sites:
|
||||
class SiteOper(DbOper):
|
||||
"""
|
||||
站点管理
|
||||
"""
|
||||
_db: Session = None
|
||||
|
||||
def __init__(self, _db=SessionLocal()):
|
||||
self._db = _db
|
||||
|
||||
def add(self, **kwargs) -> Tuple[bool, str]:
|
||||
"""
|
@ -1,19 +1,13 @@
|
||||
from typing import List
|
||||
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.db import SessionLocal
|
||||
from app.db import DbOper
|
||||
from app.db.models.siteicon import SiteIcon
|
||||
|
||||
|
||||
class SiteIcons:
|
||||
class SiteIconOper(DbOper):
|
||||
"""
|
||||
站点管理
|
||||
"""
|
||||
_db: Session = None
|
||||
|
||||
def __init__(self, _db=SessionLocal()):
|
||||
self._db = _db
|
||||
|
||||
def list(self) -> List[SiteIcon]:
|
||||
"""
|
@ -1,20 +1,14 @@
|
||||
from typing import Tuple, List
|
||||
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.core.context import MediaInfo
|
||||
from app.db import SessionLocal
|
||||
from app.db import DbOper
|
||||
from app.db.models.subscribe import Subscribe
|
||||
|
||||
|
||||
class Subscribes:
|
||||
class SubscribeOper(DbOper):
|
||||
"""
|
||||
订阅管理
|
||||
"""
|
||||
_db: Session = None
|
||||
|
||||
def __init__(self, _db=SessionLocal()):
|
||||
self._db = _db
|
||||
|
||||
def add(self, mediainfo: MediaInfo, **kwargs) -> Tuple[int, str]:
|
||||
"""
|
@ -1,25 +1,22 @@
|
||||
import json
|
||||
from typing import Any, Union
|
||||
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.db import SessionLocal
|
||||
from app.db import DbOper
|
||||
from app.db.models.systemconfig import SystemConfig
|
||||
from app.utils.object import ObjectUtils
|
||||
from app.utils.singleton import Singleton
|
||||
from app.utils.types import SystemConfigKey
|
||||
|
||||
|
||||
class SystemConfigs(metaclass=Singleton):
|
||||
class SystemConfigOper(DbOper, metaclass=Singleton):
|
||||
# 配置对象
|
||||
__SYSTEMCONF: dict = {}
|
||||
_db: Session = None
|
||||
|
||||
def __init__(self, _db=SessionLocal()):
|
||||
def __init__(self):
|
||||
"""
|
||||
加载配置到内存
|
||||
"""
|
||||
self._db = _db
|
||||
super().__init__()
|
||||
for item in SystemConfig.list(self._db):
|
||||
if ObjectUtils.is_obj(item.value):
|
||||
self.__SYSTEMCONF[item.key] = json.loads(item.value)
|
Reference in New Issue
Block a user