完成数据库设置表的增删改查
This commit is contained in:
@@ -71,15 +71,127 @@ class Setting(BaseModel, table=True):
|
||||
),
|
||||
)
|
||||
|
||||
async def add(
|
||||
type: SETTINGS_TYPE,
|
||||
name: str,
|
||||
value: Optional[str] = None
|
||||
):
|
||||
pass
|
||||
async def add(
|
||||
type: SETTINGS_TYPE = None,
|
||||
name: str = None,
|
||||
value: Optional[str] = None
|
||||
) -> None:
|
||||
"""
|
||||
向数据库内添加设置项目。
|
||||
|
||||
:param type: 设置类型/分组
|
||||
:type type: SETTINGS_TYPE
|
||||
:param name: 设置项名称
|
||||
:type name: str
|
||||
:param value: 设置值,默认为 None
|
||||
:type value: Optional[str]
|
||||
"""
|
||||
from .database import get_session
|
||||
|
||||
if isinstance(value, (dict, list)):
|
||||
value = str(value)
|
||||
|
||||
async for session in get_session():
|
||||
new_setting = Setting(type=type, name=name, value=value)
|
||||
session.add(new_setting)
|
||||
|
||||
await session.commit()
|
||||
|
||||
async def get(
|
||||
type: SETTINGS_TYPE,
|
||||
name: str
|
||||
):
|
||||
pass
|
||||
async def get(
|
||||
type: SETTINGS_TYPE,
|
||||
name: str
|
||||
) -> Optional['Setting']:
|
||||
"""
|
||||
从数据库中获取指定类型和名称的设置项。
|
||||
|
||||
:param type: 设置类型/分组
|
||||
:type type: SETTINGS_TYPE
|
||||
:param name: 设置项名称
|
||||
:type name: str
|
||||
|
||||
:return: 返回设置项对象,如果不存在则返回 None
|
||||
:rtype: Optional[Setting]
|
||||
"""
|
||||
from .database import get_session
|
||||
from sqlmodel import select
|
||||
|
||||
async for session in get_session():
|
||||
statment = select(Setting).where(
|
||||
Setting.type == type,
|
||||
Setting.name == name
|
||||
)
|
||||
|
||||
result = await session.exec(statment)
|
||||
return result.one_or_none()
|
||||
|
||||
async def set(
|
||||
type: SETTINGS_TYPE,
|
||||
name: str,
|
||||
value: Optional[str] = None
|
||||
) -> None:
|
||||
"""
|
||||
更新指定类型和名称的设置项的值。
|
||||
|
||||
:param type: 设置类型/分组
|
||||
:type type: SETTINGS_TYPE
|
||||
:param name: 设置项名称
|
||||
:type name: str
|
||||
:param value: 新的设置值,默认为 None
|
||||
:type value: Optional[str]
|
||||
|
||||
:raises ValueError: 如果设置项不存在,则抛出异常
|
||||
"""
|
||||
from .database import get_session
|
||||
from sqlmodel import select
|
||||
|
||||
if isinstance(value, (dict, list)):
|
||||
value = str(value)
|
||||
|
||||
async for session in get_session():
|
||||
statment = select(Setting).where(
|
||||
Setting.type == type,
|
||||
Setting.name == name
|
||||
)
|
||||
|
||||
result = await session.exec(statment)
|
||||
setting = result.one_or_none()
|
||||
|
||||
if not setting:
|
||||
raise ValueError(f"Setting {type}.{name} does not exist.")
|
||||
|
||||
# 设置项存在,更新数据
|
||||
setting.value = value
|
||||
await session.commit()
|
||||
|
||||
async def delete(
|
||||
type: SETTINGS_TYPE,
|
||||
name: str
|
||||
) -> None:
|
||||
"""
|
||||
删除指定类型和名称的设置项。
|
||||
|
||||
:param type: 设置类型/分组
|
||||
:type type: SETTINGS_TYPE
|
||||
:param name: 设置项名称
|
||||
:type name: str
|
||||
|
||||
:raises ValueError: 如果设置项不存在,则抛出异常
|
||||
"""
|
||||
from .database import get_session
|
||||
from sqlmodel import select, delete
|
||||
|
||||
async for session in get_session():
|
||||
statment = select(Setting).where(
|
||||
Setting.type == type,
|
||||
Setting.name == name
|
||||
)
|
||||
|
||||
result = await session.exec(statment)
|
||||
setting = result.one_or_none()
|
||||
|
||||
if not setting:
|
||||
raise ValueError(f"Setting {type}.{name} does not exist.")
|
||||
|
||||
# 设置项存在,删除数据
|
||||
await session.delete(setting)
|
||||
await session.commit()
|
||||
|
||||
Reference in New Issue
Block a user