feat: add models for physical files, policies, and user management
- Implement PhysicalFile model to manage physical file references and reference counting. - Create Policy model with associated options and group links for storage policies. - Introduce Redeem and Report models for handling redeem codes and reports. - Add Settings model for site configuration and user settings management. - Develop Share model for sharing objects with unique codes and associated metadata. - Implement SourceLink model for managing download links associated with objects. - Create StoragePack model for managing user storage packages. - Add Tag model for user-defined tags with manual and automatic types. - Implement Task model for managing background tasks with status tracking. - Develop User model with comprehensive user management features including authentication. - Introduce UserAuthn model for managing WebAuthn credentials. - Create WebDAV model for managing WebDAV accounts associated with users.
This commit is contained in:
136
sqlmodels/setting.py
Normal file
136
sqlmodels/setting.py
Normal file
@@ -0,0 +1,136 @@
|
||||
from enum import StrEnum
|
||||
|
||||
from sqlmodel import UniqueConstraint
|
||||
|
||||
from .base import SQLModelBase
|
||||
from .mixin import TableBaseMixin
|
||||
from .user import UserResponse
|
||||
|
||||
class CaptchaType(StrEnum):
|
||||
"""验证码类型枚举"""
|
||||
DEFAULT = "default"
|
||||
GCAPTCHA = "gcaptcha"
|
||||
CLOUD_FLARE_TURNSTILE = "cloudflare turnstile"
|
||||
|
||||
# ==================== DTO 模型 ====================
|
||||
|
||||
class SiteConfigResponse(SQLModelBase):
|
||||
"""站点配置响应 DTO"""
|
||||
|
||||
title: str = "DiskNext"
|
||||
"""网站标题"""
|
||||
|
||||
site_notice: str | None = None
|
||||
"""网站公告"""
|
||||
|
||||
user: UserResponse | None = None
|
||||
"""用户信息"""
|
||||
|
||||
logo_light: str | None = None
|
||||
"""网站Logo URL"""
|
||||
|
||||
logo_dark: str | None = None
|
||||
"""网站Logo URL(深色模式)"""
|
||||
|
||||
register_enabled: bool = True
|
||||
"""是否允许注册"""
|
||||
|
||||
login_captcha: bool = False
|
||||
"""登录是否需要验证码"""
|
||||
|
||||
reg_captcha: bool = False
|
||||
"""注册是否需要验证码"""
|
||||
|
||||
forget_captcha: bool = False
|
||||
"""找回密码是否需要验证码"""
|
||||
|
||||
captcha_type: CaptchaType = CaptchaType.DEFAULT
|
||||
"""验证码类型"""
|
||||
|
||||
captcha_key: str | None = None
|
||||
"""验证码 public key(DEFAULT 类型时为 None)"""
|
||||
|
||||
|
||||
# ==================== 管理员设置 DTO ====================
|
||||
|
||||
class SettingItem(SQLModelBase):
|
||||
"""单个设置项 DTO"""
|
||||
|
||||
type: str
|
||||
"""设置类型"""
|
||||
|
||||
name: str
|
||||
"""设置项名称"""
|
||||
|
||||
value: str | None = None
|
||||
"""设置值"""
|
||||
|
||||
|
||||
class SettingsListResponse(SQLModelBase):
|
||||
"""获取设置列表响应 DTO"""
|
||||
|
||||
settings: list[SettingItem]
|
||||
"""设置项列表"""
|
||||
|
||||
total: int
|
||||
"""总数"""
|
||||
|
||||
|
||||
class SettingsUpdateRequest(SQLModelBase):
|
||||
"""更新设置请求 DTO"""
|
||||
|
||||
settings: list[SettingItem]
|
||||
"""要更新的设置项列表"""
|
||||
|
||||
|
||||
class SettingsUpdateResponse(SQLModelBase):
|
||||
"""更新设置响应 DTO"""
|
||||
|
||||
updated: int
|
||||
"""更新的设置项数量"""
|
||||
|
||||
created: int
|
||||
"""新建的设置项数量"""
|
||||
|
||||
|
||||
# ==================== 数据库模型 ====================
|
||||
|
||||
class SettingsType(StrEnum):
|
||||
"""设置类型枚举"""
|
||||
|
||||
ARIA2 = "aria2"
|
||||
AUTH = "auth"
|
||||
AUTHN = "authn"
|
||||
AVATAR = "avatar"
|
||||
BASIC = "basic"
|
||||
CAPTCHA = "captcha"
|
||||
CRON = "cron"
|
||||
FILE_EDIT = "file_edit"
|
||||
LOGIN = "login"
|
||||
MAIL = "mail"
|
||||
MAIL_TEMPLATE = "mail_template"
|
||||
MOBILE = "mobile"
|
||||
OAUTH = "oauth"
|
||||
PATH = "path"
|
||||
PREVIEW = "preview"
|
||||
PWA = "pwa"
|
||||
REGISTER = "register"
|
||||
RETRY = "retry"
|
||||
SHARE = "share"
|
||||
SLAVE = "slave"
|
||||
TASK = "task"
|
||||
THUMB = "thumb"
|
||||
TIMEOUT = "timeout"
|
||||
UPLOAD = "upload"
|
||||
VERSION = "version"
|
||||
VIEW = "view"
|
||||
WOPI = "wopi"
|
||||
|
||||
# 数据库模型
|
||||
class Setting(SettingItem, TableBaseMixin):
|
||||
"""设置模型,继承 SettingItem 中的 name 和 value 字段"""
|
||||
|
||||
__table_args__ = (UniqueConstraint("type", "name", name="uq_setting_type_name"),)
|
||||
|
||||
type: SettingsType
|
||||
"""设置类型/分组(覆盖基类的 str 类型为枚举类型)"""
|
||||
Reference in New Issue
Block a user