Skip to content

Commit

Permalink
removing legacy preferences
Browse files Browse the repository at this point in the history
  • Loading branch information
voynow committed Nov 5, 2024
1 parent 9c48042 commit d34e1b2
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 75 deletions.
7 changes: 2 additions & 5 deletions src/auth_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -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}


Expand Down
6 changes: 3 additions & 3 deletions src/frontend_router.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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(),
},
}

Expand All @@ -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}


Expand Down
8 changes: 4 additions & 4 deletions src/supabase_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
)
Expand Down
5 changes: 2 additions & 3 deletions src/types/user_row.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
87 changes: 27 additions & 60 deletions test.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -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=<Day.WED: 'Wed'>, session_type=<SessionType.MODERATE: 'moderate run'>), TheoreticalTrainingSession(day=<Day.SUN: 'Sun'>, session_type=<SessionType.LONG: 'long run'>), TheoreticalTrainingSession(day=<Day.THURS: 'Thurs'>, session_type=<SessionType.MODERATE: 'moderate run'>)]\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=<RaceDistance.MARATHON: 'marathon'> ideal_training_week=[TheoreticalTrainingSession(day=<Day.MON: 'Mon'>, session_type=<SessionType.EASY: 'easy run'>), TheoreticalTrainingSession(day=<Day.TUES: 'Tues'>, session_type=<SessionType.EASY: 'easy run'>), TheoreticalTrainingSession(day=<Day.WED: 'Wed'>, session_type=<SessionType.EASY: 'easy run'>), TheoreticalTrainingSession(day=<Day.THURS: 'Thurs'>, session_type=<SessionType.EASY: 'easy run'>), TheoreticalTrainingSession(day=<Day.FRI: 'Fri'>, session_type=<SessionType.REST: 'rest day'>), TheoreticalTrainingSession(day=<Day.SAT: 'Sat'>, session_type=<SessionType.LONG: 'long run'>), TheoreticalTrainingSession(day=<Day.SUN: 'Sun'>, session_type=<SessionType.REST: 'rest day'>)]\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)"
]
},
{
Expand Down

0 comments on commit d34e1b2

Please sign in to comment.