feat: 重构模型和响应结构,优化用户和对象管理逻辑,添加 Dockerfile
This commit is contained in:
@@ -1,27 +1,25 @@
|
||||
from typing import Annotated
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from pydantic import BaseModel
|
||||
|
||||
from middleware.auth import AuthRequired
|
||||
from middleware.dependencies import SessionDep
|
||||
from models import Object, ObjectType, User, response
|
||||
from models import (
|
||||
DirectoryCreateRequest,
|
||||
DirectoryResponse,
|
||||
Object,
|
||||
ObjectResponse,
|
||||
ObjectType,
|
||||
PolicyResponse,
|
||||
User,
|
||||
response,
|
||||
)
|
||||
|
||||
directory_router = APIRouter(
|
||||
prefix="/directory",
|
||||
tags=["directory"]
|
||||
)
|
||||
|
||||
|
||||
class DirectoryCreateRequest(BaseModel):
|
||||
"""创建目录请求"""
|
||||
|
||||
path: str
|
||||
"""目录路径,如 /docs/images"""
|
||||
|
||||
policy_id: int | None = None
|
||||
"""存储策略ID,不指定则继承父目录"""
|
||||
|
||||
@directory_router.get(
|
||||
path="/{path:path}",
|
||||
summary="获取目录内容",
|
||||
@@ -51,7 +49,7 @@ async def router_directory_get(
|
||||
policy = await folder.awaitable_attrs.policy
|
||||
|
||||
objects = [
|
||||
response.ObjectModel(
|
||||
ObjectResponse(
|
||||
id=str(child.id),
|
||||
name=child.name,
|
||||
path=f"/{child.name}", # TODO: 完整路径
|
||||
@@ -66,16 +64,16 @@ async def router_directory_get(
|
||||
]
|
||||
|
||||
return response.ResponseModel(
|
||||
data=response.DirectoryModel(
|
||||
data=DirectoryResponse(
|
||||
parent=str(folder.parent_id) if folder.parent_id else None,
|
||||
objects=objects,
|
||||
policy=response.PolicyModel(
|
||||
policy=PolicyResponse(
|
||||
id=str(policy.id),
|
||||
name=policy.name,
|
||||
type=policy.type.value,
|
||||
max_size=policy.max_size,
|
||||
file_type=[],
|
||||
)
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -30,16 +30,16 @@ user_settings_router = APIRouter(
|
||||
async def router_user_session(
|
||||
session: SessionDep,
|
||||
form_data: Annotated[OAuth2PasswordRequestForm, Depends()],
|
||||
) -> models.response.TokenModel:
|
||||
) -> models.TokenResponse:
|
||||
username = form_data.username
|
||||
password = form_data.password
|
||||
|
||||
result = await service.user.Login(
|
||||
session,
|
||||
models.user.LoginRequest(username=username, password=password),
|
||||
models.LoginRequest(username=username, password=password),
|
||||
)
|
||||
|
||||
if isinstance(result, models.response.TokenModel):
|
||||
if isinstance(result, models.TokenResponse):
|
||||
return result
|
||||
elif result is None:
|
||||
raise HTTPException(status_code=401, detail="Invalid username or password")
|
||||
@@ -203,13 +203,13 @@ async def router_user_me(
|
||||
"""
|
||||
group = await models.Group.get(session, models.Group.id == user.group_id)
|
||||
|
||||
user_group = models.response.GroupModel(
|
||||
user_group = models.GroupResponse(
|
||||
id=group.id,
|
||||
name=group.name,
|
||||
allowShare=group.share_enabled,
|
||||
allow_share=group.share_enabled,
|
||||
)
|
||||
|
||||
users = models.response.UserModel(
|
||||
users = models.UserResponse(
|
||||
id=user.id,
|
||||
username=user.username,
|
||||
nickname=user.nick,
|
||||
@@ -369,7 +369,7 @@ def router_user_settings() -> models.response.ResponseModel:
|
||||
Returns:
|
||||
dict: A dictionary containing the current user settings.
|
||||
"""
|
||||
return models.response.ResponseModel(data=models.response.UserSettingModel().model_dump())
|
||||
return models.response.ResponseModel(data=models.UserSettingResponse().model_dump())
|
||||
|
||||
@user_settings_router.post(
|
||||
path='/avatar',
|
||||
|
||||
Reference in New Issue
Block a user