Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/api/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
from src.api.roles.client.client import router as client_router
from src.api.roles.shared.fitness import router as shared_fitness_router
from src.api.roles.client.fitness import router as client_fitness_router
from src.api.roles.client.telemetry import router as client_telemetry_router
from src.api.roles.coach.fitness import router as coach_fitness_router
from src.api.roles.admin.admin import router as admin_router

Expand All @@ -32,6 +33,7 @@
app.include_router(client_router)
app.include_router(shared_fitness_router)
app.include_router(client_fitness_router)
app.include_router(client_telemetry_router)
app.include_router(coach_fitness_router)
app.include_router(admin_router)

Expand Down
9 changes: 7 additions & 2 deletions src/api/roles/client/client.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from datetime import date
from datetime import datetime

from fastapi import APIRouter, HTTPException, Depends
from src.api.dependencies import get_account_from_bearer, get_client_account
Expand All @@ -11,6 +11,11 @@
from src.database.client.models import Client, ClientAvailability
from src.database.telemetry.models import ClientTelemetry


def _today_utc_midnight() -> datetime:
return datetime.utcnow().replace(hour=0, minute=0, second=0, microsecond=0)


router = APIRouter(prefix="/roles/client", tags=["client"])

@router.post("/initial_survey", response_model=CreateClientResponse)
Expand Down Expand Up @@ -45,7 +50,7 @@ def log_initial_survey(client_details: InitialSurveyInput, db = Depends(get_sess
db.add(client)
db.flush()

telem = ClientTelemetry(client_id=client.id, date=date.today())
telem = ClientTelemetry(client_id=client.id, date=_today_utc_midnight())
db.add(telem)

client_details.fitness_goals.client_id = client.id # type: ignore
Expand Down
28 changes: 27 additions & 1 deletion src/api/roles/client/domain.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from pydantic import BaseModel, Field, model_validator
from datetime import datetime
from pydantic import BaseModel, Field, field_validator, model_validator
from typing import List, Optional
from fastapi import HTTPException
#Client
Expand All @@ -8,6 +9,31 @@
from src.database.telemetry.models import HealthMetrics
from src.database.client.models import Client

class StepCountUpdateInput(BaseModel):
step_count: int

@field_validator("step_count")
@classmethod
def step_count_must_be_non_negative(cls, v):
if 0 > v or v > 100000:
raise ValueError("Step count must be a non-negative integer")
return v

class StepCountUpdateOutput(BaseModel):
step_count: int

class DunderInput(BaseModel):
pass

class WeightUpdateInput(BaseModel):
@field_validator("weight")
@classmethod
def weight_must_be_valid(cls, v: int) -> int:
if v <= 0:
raise ValueError("Weight must be greater than 0")
return v
weight: int

class InitialSurveyInput(BaseModel): #creates a client
fitness_goals: FitnessGoals
payment_information: PaymentInformation
Expand Down
Loading
Loading