feat(packs-lab): 4 라우트 — sign-link, upload, list, delete (HMAC + supabase)
This commit is contained in:
39
packs-lab/app/models.py
Normal file
39
packs-lab/app/models.py
Normal file
@@ -0,0 +1,39 @@
|
||||
"""Pydantic schemas for packs API."""
|
||||
from datetime import datetime
|
||||
from typing import Literal
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
PackTier = Literal["starter", "pro", "master"]
|
||||
|
||||
|
||||
class SignLinkRequest(BaseModel):
|
||||
"""Vercel → backend: 사용자 다운로드 링크 발급 요청."""
|
||||
file_path: str = Field(..., description="NAS 절대 경로 — pack_files.file_path 그대로")
|
||||
expires_in_seconds: int = Field(default=14400, description="공유 링크 만료 (기본 4시간)")
|
||||
|
||||
|
||||
class SignLinkResponse(BaseModel):
|
||||
url: str
|
||||
expires_at: datetime
|
||||
|
||||
|
||||
class UploadResponse(BaseModel):
|
||||
file_id: str # uuid
|
||||
file_path: str
|
||||
filename: str
|
||||
size_bytes: int
|
||||
min_tier: PackTier
|
||||
label: str
|
||||
uploaded_at: datetime
|
||||
|
||||
|
||||
class PackFileItem(BaseModel):
|
||||
id: str
|
||||
min_tier: PackTier
|
||||
label: str
|
||||
file_path: str
|
||||
filename: str
|
||||
size_bytes: int
|
||||
sort_order: int
|
||||
uploaded_at: datetime
|
||||
Reference in New Issue
Block a user