44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
from pydantic import BaseModel, ConfigDict
|
|
from typing import Optional
|
|
from datetime import datetime
|
|
from uuid import UUID
|
|
|
|
|
|
class ShareBase(BaseModel):
|
|
"""Base share schema with common attributes."""
|
|
access_level: str # 'read_only', 'edit', 'guest_read_only'
|
|
requires_auth: bool = True
|
|
expires_at: Optional[datetime] = None
|
|
|
|
|
|
class ShareCreate(ShareBase):
|
|
"""Schema for creating a new share link."""
|
|
pass
|
|
|
|
|
|
class ShareUpdate(BaseModel):
|
|
"""Schema for updating share information."""
|
|
access_level: Optional[str] = None
|
|
requires_auth: Optional[bool] = None
|
|
expires_at: Optional[datetime] = None
|
|
|
|
|
|
class ShareResponse(ShareBase):
|
|
"""Response schema for share data."""
|
|
id: UUID
|
|
map_id: UUID
|
|
share_token: str
|
|
created_at: datetime
|
|
created_by: Optional[UUID] = None
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
|
|
class ShareValidateResponse(BaseModel):
|
|
"""Response schema for share token validation."""
|
|
valid: bool
|
|
access_level: Optional[str] = None
|
|
map_id: Optional[UUID] = None
|
|
requires_auth: bool = False
|
|
expired: bool = False
|