refactor(db): convert suitable string fields to JSON type

This commit is contained in:
InfinityPacer
2024-09-30 16:16:29 +08:00
parent d69041f049
commit d3186cd742
23 changed files with 52 additions and 70 deletions

View File

@@ -54,7 +54,7 @@ class MediaServerOper(DbOper):
# 判断季是否存在
if not item.seasoninfo:
return None
seasoninfo = json.loads(item.seasoninfo) or {}
seasoninfo = item.seasoninfo or {}
if kwargs.get("season") not in seasoninfo.keys():
return None
return item

View File

@@ -52,7 +52,7 @@ class MessageOper(DbOper):
"userid": userid,
"action": action,
"reg_time": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
"note": note
"note": note or {}
})
# 从kwargs中去掉Message中没有的字段

View File

@@ -1,6 +1,6 @@
import time
from sqlalchemy import Column, Integer, String, Sequence
from sqlalchemy import Column, Integer, String, Sequence, JSON
from sqlalchemy.orm import Session
from app.db import db_query, db_update, Base
@@ -46,7 +46,7 @@ class DownloadHistory(Base):
# 创建时间
date = Column(String)
# 附加信息
note = Column(String)
note = Column(JSON)
@staticmethod
@db_query

View File

@@ -1,7 +1,7 @@
from datetime import datetime
from typing import Optional
from sqlalchemy import Column, Integer, String, Sequence
from sqlalchemy import Column, Integer, String, Sequence, JSON
from sqlalchemy.orm import Session
from app.db import db_query, db_update, Base
@@ -35,9 +35,9 @@ class MediaServerItem(Base):
# 路径
path = Column(String)
# 季集
seasoninfo = Column(String)
seasoninfo = Column(JSON, default=dict)
# 备注
note = Column(String)
note = Column(JSON)
# 同步时间
lst_mod_date = Column(String, default=datetime.now().strftime("%Y-%m-%d %H:%M:%S"))

View File

@@ -1,4 +1,4 @@
from sqlalchemy import Column, Integer, String, Sequence
from sqlalchemy import Column, Integer, String, Sequence, JSON
from sqlalchemy.orm import Session
from app.db import db_query, Base
@@ -30,7 +30,7 @@ class Message(Base):
# 消息方向0-接收息1-发送消息
action = Column(Integer)
# 附件json
note = Column(String)
note = Column(JSON)
@staticmethod
@db_query

View File

@@ -1,6 +1,6 @@
from datetime import datetime
from sqlalchemy import Boolean, Column, Integer, String, Sequence
from sqlalchemy import Boolean, Column, Integer, String, Sequence, JSON
from sqlalchemy.orm import Session
from app.db import db_query, db_update, Base
@@ -38,7 +38,7 @@ class Site(Base):
# 是否公开站点
public = Column(Integer)
# 附加信息
note = Column(String)
note = Column(JSON)
# 流控单位周期
limit_interval = Column(Integer, default=0)
# 流控次数

View File

@@ -40,11 +40,11 @@ class SiteUserData(Base):
# 下载体积
leeching_size = Column(Float, default=0)
# 做种人数, 种子大小 JSON
seeding_info = Column(JSON)
seeding_info = Column(JSON, default=dict)
# 未读消息
message_unread = Column(Integer, default=0)
# 未读消息内容 JSON
message_unread_contents = Column(JSON)
message_unread_contents = Column(JSON, default=list)
# 错误信息
err_msg = Column(String)
# 更新日期

View File

@@ -1,6 +1,6 @@
import time
from sqlalchemy import Column, Integer, String, Sequence, Float
from sqlalchemy import Column, Integer, String, Sequence, Float, JSON
from sqlalchemy.orm import Session
from app.db import db_query, db_update, Base
@@ -53,7 +53,7 @@ class Subscribe(Base):
# 缺失集数
lack_episode = Column(Integer)
# 附加信息
note = Column(String)
note = Column(JSON)
# 状态N-新建, R-订阅中
state = Column(String, nullable=False, index=True, default='N')
# 最后更新时间
@@ -63,7 +63,7 @@ class Subscribe(Base):
# 订阅用户
username = Column(String)
# 订阅站点
sites = Column(String)
sites = Column(JSON, default=list)
# 是否洗版
best_version = Column(Integer, default=0)
# 当前优先级

View File

@@ -12,7 +12,7 @@ class SystemConfig(Base):
# 主键
key = Column(String, index=True)
# 值
value = Column(JSON, nullable=True)
value = Column(JSON)
@staticmethod
@db_query

View File

@@ -1,6 +1,6 @@
import time
from sqlalchemy import Column, Integer, String, Sequence, Boolean, func, or_
from sqlalchemy import Column, Integer, String, Sequence, Boolean, func, or_, JSON
from sqlalchemy.orm import Session
from app.db import db_query, db_update, Base
@@ -16,13 +16,13 @@ class TransferHistory(Base):
# 源存储
src_storage = Column(String)
# 源文件项
src_fileitem = Column(String)
src_fileitem = Column(JSON, default=dict)
# 目标路径
dest = Column(String)
# 目标存储
dest_storage = Column(String)
# 目标文件项
dest_fileitem = Column(String)
dest_fileitem = Column(JSON, default=dict)
# 转移模式 move/copy/link...
mode = Column(String)
# 类型 电影/电视剧
@@ -52,7 +52,7 @@ class TransferHistory(Base):
# 时间
date = Column(String, index=True)
# 文件清单以JSON存储
files = Column(String)
files = Column(JSON, default=list)
@staticmethod
@db_query

View File

@@ -31,9 +31,9 @@ class User(Base):
# otp秘钥
otp_secret = Column(String, default=None)
# 用户权限 json
permissions = Column(JSON, default='')
permissions = Column(JSON, default=dict)
# 用户个性化设置 json
settings = Column(JSON, default='')
settings = Column(JSON, default=dict)
@staticmethod
@db_query

View File

@@ -14,7 +14,7 @@ class UserConfig(Base):
# 配置键
key = Column(String)
# 值
value = Column(JSON, nullable=True)
value = Column(JSON)
__table_args__ = (
# 用户名和配置键联合唯一

View File

@@ -202,7 +202,7 @@ class SiteOper(DbOper):
seconds=seconds or 1,
lst_state=0,
lst_mod_date=lst_date,
note=json.dumps(note)
note=note
).create(self._db)
def fail(self, domain: str):

View File

@@ -128,10 +128,10 @@ class TransferHistoryOper(DbOper):
self.add_force(
src=fileitem.path,
src_storage=fileitem.storage,
src_fileitem=json.dumps(fileitem.dict()),
src_fileitem=fileitem.dict(),
dest=transferinfo.target_item.path if transferinfo.target_item else None,
dest_storage=transferinfo.target_item.storage if transferinfo.target_item else None,
dest_fileitem=json.dumps(transferinfo.target_item.dict()) if transferinfo.target_item else None,
dest_fileitem=transferinfo.target_item.dict() if transferinfo.target_item else None,
mode=mode,
type=mediainfo.type.value,
category=mediainfo.category,
@@ -146,7 +146,7 @@ class TransferHistoryOper(DbOper):
image=mediainfo.get_poster_image(),
download_hash=download_hash,
status=1,
files=json.dumps(transferinfo.file_list)
files=transferinfo.file_list
)
def add_fail(self, fileitem: FileItem, mode: str, meta: MetaBase, mediainfo: MediaInfo = None,
@@ -158,10 +158,10 @@ class TransferHistoryOper(DbOper):
his = self.add_force(
src=fileitem.path,
src_storage=fileitem.storage,
src_fileitem=json.dumps(fileitem.dict()),
src_fileitem=fileitem.dict(),
dest=transferinfo.target_item.path if transferinfo.target_item else None,
dest_storage=transferinfo.target_item.storage if transferinfo.target_item else None,
dest_fileitem=json.dumps(transferinfo.target_item.dict()) if transferinfo.target_item else None,
dest_fileitem=transferinfo.target_item.dict() if transferinfo.target_item else None,
mode=mode,
type=mediainfo.type.value,
category=mediainfo.category,
@@ -177,7 +177,7 @@ class TransferHistoryOper(DbOper):
download_hash=download_hash,
status=0,
errmsg=transferinfo.message or '未知错误',
files=json.dumps(transferinfo.file_list)
files=transferinfo.file_list
)
else:
his = self.add_force(
@@ -185,7 +185,7 @@ class TransferHistoryOper(DbOper):
year=meta.year,
src=fileitem.path,
src_storage=fileitem.storage,
src_fileitem=json.dumps(fileitem.dict()),
src_fileitem=fileitem.dict(),
mode=mode,
seasons=meta.season,
episodes=meta.episode,

View File

@@ -80,10 +80,7 @@ class UserOper(DbOper):
"""
user = User.get_by_name(self._db, name)
if user:
try:
return json.loads(user.permissions)
except json.JSONDecodeError:
return {}
return user.permissions or {}
return {}
def get_settings(self, name: str) -> Optional[dict]:
@@ -92,12 +89,7 @@ class UserOper(DbOper):
"""
user = User.get_by_name(self._db, name)
if user:
try:
if user.settings:
return json.loads(user.settings)
return {}
except json.JSONDecodeError:
return {}
return user.settings or {}
return None
def get_setting(self, name: str, key: str) -> Optional[str]: