Complete M11 Creator Studio and M12 Trust & Safety for PC5
checkpoint / checkpoint (push) Failing after 3h14m9s
checkpoint / checkpoint (push) Failing after 3h14m9s
- Creator Studio: Visual behavior & property inspector, GLB model importer, binary persistence - Trust & Safety: 18+ TOS confirmation (DOB removed), creator guidelines & briefing card on join, in-game reporting HUD - Test Harness: Add --filter, --skip-backend, --skip-godot to run_checkpoint_tests.py
This commit is contained in:
@@ -6,6 +6,7 @@ from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException, UploadFile, File, Query
|
||||
from fastapi.responses import FileResponse
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
@@ -241,3 +242,20 @@ async def upload_asset_file(
|
||||
await db.commit()
|
||||
await db.refresh(asset)
|
||||
return asset
|
||||
|
||||
|
||||
@router.get("/{asset_id}/file")
|
||||
async def get_asset_file(
|
||||
asset_id: int,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
"""Download an asset binary file."""
|
||||
asset = await db.get(Asset, asset_id)
|
||||
if asset is None or not asset.file_path or not os.path.exists(asset.file_path):
|
||||
raise HTTPException(status_code=404, detail="Asset file not found")
|
||||
return FileResponse(
|
||||
asset.file_path,
|
||||
media_type=asset.mime_type or "application/octet-stream",
|
||||
filename=os.path.basename(asset.file_path),
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user