diff --git a/src/auth_manager.py b/src/auth_manager.py index bb11049..c9bdef2 100644 --- a/src/auth_manager.py +++ b/src/auth_manager.py @@ -147,14 +147,11 @@ def authenticate_with_code(code: str) -> UserAuthRow: def signup(user_auth: UserAuthRow, email: Optional[str] = None) -> dict: """ """ - preferences = ( - "I'm looking to improve my running performance while being smart and realistic." - ) send_alert_email( subject="TrackFlow Alert: New Signup Attempt", - text_content=f"You have a new client {email=} attempting to signup with {preferences=}", + text_content=f"You have a new client {email=} attempting to signup", ) - upsert_user(UserRow(athlete_id=user_auth.athlete_id, preferences=preferences)) + upsert_user(UserRow(athlete_id=user_auth.athlete_id)) return {"success": True, "jwt_token": user_auth.jwt_token, "is_new_user": True} diff --git a/src/frontend_router.py b/src/frontend_router.py index 2be6bdc..516393f 100644 --- a/src/frontend_router.py +++ b/src/frontend_router.py @@ -3,7 +3,7 @@ import jwt from src import auth_manager -from src.activities import get_daily_activity, get_weekly_summaries +from src.activities import get_weekly_summaries from src.auth_manager import get_strava_client from src.supabase_client import ( get_training_week, @@ -36,7 +36,7 @@ def get_profile_handler(athlete_id: str, payload: dict) -> dict: "lastname": athlete.lastname, "profile": athlete.profile, "email": user.email, - "preferences": user.preferences_json.json(), + "preferences": user.preferences.json(), }, } @@ -45,7 +45,7 @@ def update_preferences_handler(athlete_id: str, payload: dict) -> dict: """Handle update_preferences request.""" if payload is None or "preferences" not in payload: return {"success": False, "error": "Missing preferences in payload"} - update_preferences(athlete_id=athlete_id, preferences_json=payload["preferences"]) + update_preferences(athlete_id=athlete_id, preferences=payload["preferences"]) return {"success": True} diff --git a/src/supabase_client.py b/src/supabase_client.py index b3800dc..f6daf4d 100644 --- a/src/supabase_client.py +++ b/src/supabase_client.py @@ -158,22 +158,22 @@ def upsert_training_week( return response -def update_preferences(athlete_id: int, preferences_json: dict) -> APIResponse: +def update_preferences(athlete_id: int, preferences: dict) -> APIResponse: """ Update user's preferences :param athlete_id: The ID of the athlete - :param preferences: json string representing a Preferences object + :param preferences: A Preferences object as a dictionary :return: APIResponse """ try: - Preferences(**preferences_json) + Preferences(**preferences) except Exception as e: raise ValueError("Invalid preferences") from e table = client.table("user") response = ( - table.update({"preferences_json": preferences_json}) + table.update({"preferences": preferences}) .eq("athlete_id", athlete_id) .execute() ) diff --git a/src/types/user_row.py b/src/types/user_row.py index b78ba23..53f5a86 100644 --- a/src/types/user_row.py +++ b/src/types/user_row.py @@ -23,12 +23,11 @@ class TheoreticalTrainingSession(BaseModel): class Preferences(BaseModel): race_distance: Optional[RaceDistance] = None - ideal_training_week: Optional[List[TheoreticalTrainingSession]] = None + ideal_training_week: Optional[List[TheoreticalTrainingSession]] = [] class UserRow(BaseModel): athlete_id: int - preferences: str + preferences: Optional[Preferences] = Preferences() email: Optional[str] = None - preferences_json: Optional[Preferences] = {} created_at: datetime = datetime.now() diff --git a/test.ipynb b/test.ipynb index 92f38ab..1226ceb 100644 --- a/test.ipynb +++ b/test.ipynb @@ -10,75 +10,42 @@ "%autoreload 2" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Trigger Lambda E2E" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "import requests\n", - "import os\n", - "\n", - "url = \"https://lwg77yq7dd.execute-api.us-east-1.amazonaws.com/prod/signup\"\n", - "\n", - "response = requests.post(url, json={\n", - " \"trigger_test_key\": os.environ[\"TRIGGER_TEST_KEY\"]\n", - "})\n", - "\n", - "response.json()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "from src.auth_manager import get_strava_client\n", - "from src.supabase_client import get_user\n", - "from src.activities import get_activity_summaries\n", - "\n", - "user = get_user(os.environ[\"JAMIES_ATHLETE_ID\"])\n", - "strava_client = get_strava_client(user.athlete_id)\n", - "summaries = get_activity_summaries(strava_client)" - ] - }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "{'success': True,\n", - " 'weekly_summaries': ['{\"year\": 2024, \"week_of_year\": 38, \"week_start_date\": \"2024-09-16\", \"longest_run\": 0.0, \"total_distance\": 0.0}',\n", - " '{\"year\": 2024, \"week_of_year\": 39, \"week_start_date\": \"2024-09-23\", \"longest_run\": 9.01, \"total_distance\": 20.38}',\n", - " '{\"year\": 2024, \"week_of_year\": 40, \"week_start_date\": \"2024-09-30\", \"longest_run\": 18.01, \"total_distance\": 45.05}',\n", - " '{\"year\": 2024, \"week_of_year\": 41, \"week_start_date\": \"2024-10-07\", \"longest_run\": 20.03, \"total_distance\": 50.1}',\n", - " '{\"year\": 2024, \"week_of_year\": 42, \"week_start_date\": \"2024-10-14\", \"longest_run\": 20.02, \"total_distance\": 44.66}',\n", - " '{\"year\": 2024, \"week_of_year\": 43, \"week_start_date\": \"2024-10-21\", \"longest_run\": 20.02, \"total_distance\": 41.38}',\n", - " '{\"year\": 2024, \"week_of_year\": 44, \"week_start_date\": \"2024-10-28\", \"longest_run\": 15.81, \"total_distance\": 40.08}',\n", - " '{\"year\": 2024, \"week_of_year\": 45, \"week_start_date\": \"2024-11-04\", \"longest_run\": 8.37, \"total_distance\": 8.37}']}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "race_distance=None ideal_training_week=[]\n", + "race_distance=None ideal_training_week=[]\n", + "race_distance=None ideal_training_week=[]\n", + "race_distance=None ideal_training_week=[]\n", + "race_distance=None ideal_training_week=[]\n", + "race_distance=None ideal_training_week=[]\n", + "race_distance=None ideal_training_week=[]\n", + "race_distance=None ideal_training_week=[TheoreticalTrainingSession(day=, session_type=), TheoreticalTrainingSession(day=, session_type=), TheoreticalTrainingSession(day=, session_type=)]\n", + "race_distance=None ideal_training_week=[]\n", + "race_distance=None ideal_training_week=[]\n", + "race_distance=None ideal_training_week=[]\n", + "race_distance=None ideal_training_week=[]\n", + "race_distance=None ideal_training_week=[]\n", + "race_distance=None ideal_training_week=[]\n", + "race_distance=None ideal_training_week=[]\n", + "race_distance=None ideal_training_week=[]\n", + "race_distance=None ideal_training_week=[]\n", + "race_distance= ideal_training_week=[TheoreticalTrainingSession(day=, session_type=), TheoreticalTrainingSession(day=, session_type=), TheoreticalTrainingSession(day=, session_type=), TheoreticalTrainingSession(day=, session_type=), TheoreticalTrainingSession(day=, session_type=), TheoreticalTrainingSession(day=, session_type=), TheoreticalTrainingSession(day=, session_type=)]\n", + "race_distance=None ideal_training_week=[]\n" + ] } ], "source": [ - "from src.frontend_router import get_weekly_summaries_handler\n", + "from src.supabase_client import list_users\n", "\n", - "get_weekly_summaries_handler(user.athlete_id, {})" + "for user in list_users():\n", + " print(user.preferences)" ] }, {