This commit is contained in:
Timothy Jaeryang Baek committed 2026-05-14 01:43:33 +09:00
1 parent ab0ee858b7
commit 3127f1b462
6 files changed
+157 -9

No files matched your search

+13
View File
@@ -384,6 +384,19 @@ class FilesTable:
except Exception:
return None
async def update_file_name_by_id(self, id: str, name: str, db: AsyncSession | None = None) -> FileModel | None:
async with get_async_db_context(db) as db:
try:
result = await db.execute(select(File).filter_by(id=id))
file = result.scalars().first()
file.filename = name
file.meta = {**(file.meta if file.meta else {}), 'name': name}
file.updated_at = int(time.time())
await db.commit()
return FileModel.model_validate(file)
except Exception:
return None
async def delete_file_by_id(self, id: str, db: AsyncSession | None = None) -> bool:
async with get_async_db_context(db) as db:
try:
+40
View File
@@ -765,6 +765,46 @@ async def get_file_content_by_id(
)
############################
# Rename File By Id
############################
class FileRenameForm(BaseModel):
filename: str
@router.post('/{id}/rename')
async def rename_file_by_id(
id: str,
form_data: FileRenameForm,
user=Depends(get_verified_user),
db: AsyncSession = Depends(get_async_session),
):
file = await Files.get_file_by_id(id, db=db)
if not file:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail=ERROR_MESSAGES.NOT_FOUND,
)
if file.user_id == user.id or user.role == 'admin' or await has_access_to_file(id, 'write', user, db=db):
result = await Files.update_file_name_by_id(id, form_data.filename, db=db)
if result:
return result
else:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=ERROR_MESSAGES.DEFAULT('Error renaming file'),
)
else:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail=ERROR_MESSAGES.NOT_FOUND,
)
############################
# Delete File By Id
############################