Files
trygo-py-cliclient/src/taiga_pycli/models.py
Deepak Mallubhotla 8be5b5f1c8
Some checks failed
Nix Tests / nix-test (nix-runner) (push) Failing after 3m35s
Python Tests / python-test (push) Failing after 52s
cli to view workouts
2025-11-01 23:38:19 -05:00

103 lines
1.9 KiB
Python

from dataclasses import dataclass
from typing import Optional
@dataclass
class User:
"""User model for API requests and responses"""
email: str
password: str
display_name: str
id: Optional[str] = None
@dataclass
class RegisterRequest:
"""Request payload for /auth/register endpoint"""
email: str
password: str
display_name: str
@dataclass
class LoginRequest:
"""Request payload for /auth/login endpoint"""
email: str
password: str
@dataclass
class AuthResponse:
"""Response from authentication endpoints"""
message: str
email: Optional[str] = None
id: Optional[str] = None
@dataclass
class Hat:
"""A wearable hat"""
name: str
description: str
user_id: int
@dataclass
class ActivityFile:
"""Activity file model for API responses"""
id: int
timestamp: str
file_repo_hash: Optional[str]
created_at: str
updated_at: str
user_id: int
@dataclass
class Workout:
"""Workout model for API responses"""
id: int
distance_miles: Optional[float]
time_seconds: Optional[float]
speed_mph: Optional[float]
pace_min_per_mile: Optional[float]
start_time: Optional[str]
end_time: Optional[str]
activity_file_id: Optional[int]
created_at: str
updated_at: str
user_id: int
@dataclass
class CreateWorkoutRequest:
"""Request payload for creating a new workout"""
distance_miles: Optional[float] = None
time_seconds: Optional[float] = None
speed_mph: Optional[float] = None
pace_min_per_mile: Optional[float] = None
start_time: Optional[str] = None
end_time: Optional[str] = None
activity_file_id: Optional[int] = None
@dataclass
class UpdateWorkoutRequest:
"""Request payload for updating an existing workout"""
distance_miles: Optional[float] = None
time_seconds: Optional[float] = None
speed_mph: Optional[float] = None
pace_min_per_mile: Optional[float] = None
start_time: Optional[str] = None
end_time: Optional[str] = None
activity_file_id: Optional[int] = None