20 lines
735 B
Python
20 lines
735 B
Python
import uuid
|
|
from datetime import datetime, timezone
|
|
from sqlmodel import SQLModel, Field
|
|
|
|
|
|
class Activity(SQLModel, table=True):
|
|
__tablename__ = "activities"
|
|
|
|
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
|
|
user_id: uuid.UUID = Field(foreign_key="users.id", index=True)
|
|
type: str = Field(max_length=16) # run | cycle | walk | hike
|
|
started_at: datetime | None = None
|
|
ended_at: datetime | None = None
|
|
distance_m: float | None = None
|
|
raw_gpx: str | None = None # deleted after 30 days (privacy)
|
|
status: str = Field(
|
|
default="pending", max_length=16
|
|
) # pending | completed | failed
|
|
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|