fix dboper

This commit is contained in:
jxxghp
2023-06-15 07:12:59 +08:00
parent 7506f39258
commit ab4895ff85
13 changed files with 106 additions and 89 deletions

View File

@ -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()

View File

@ -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
View 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

View File

@ -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]:
"""

View File

@ -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]:
"""

View File

@ -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]:
"""

View File

@ -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)