Shri Jayaram commited on
Commit
5c508db
·
unverified ·
2 Parent(s): 0d11093 721760c

Merge pull request #36 from yuvabe-ai-labs/feat/notify

Browse files
Files changed (2) hide show
  1. src/profile/service.py +0 -1
  2. src/wellbeing/service.py +32 -8
src/profile/service.py CHANGED
@@ -1,6 +1,5 @@
1
  from src.notifications.service import get_user_device_tokens
2
  from src.profile.utils import build_raw_message, refresh_access_token
3
- from src.profile.schemas import SendMailRequest
4
  from src.core.models import Assets, Users, UserTeamsRole, Roles
5
  from fastapi import HTTPException
6
  from passlib.context import CryptContext
 
1
  from src.notifications.service import get_user_device_tokens
2
  from src.profile.utils import build_raw_message, refresh_access_token
 
3
  from src.core.models import Assets, Users, UserTeamsRole, Roles
4
  from fastapi import HTTPException
5
  from passlib.context import CryptContext
src/wellbeing/service.py CHANGED
@@ -1,27 +1,51 @@
1
  from sqlalchemy.ext.asyncio import AsyncSession
2
  from sqlalchemy.future import select
3
- from datetime import datetime
4
  from typing import List
5
  from .models import WaterLogs
6
  import uuid
7
  from .schemas import WaterLogCreate, WaterLogUpdate
 
8
 
9
 
10
- # Create a new water log
11
  async def create_water_log(
12
  session: AsyncSession, water_log: WaterLogCreate, user_id: uuid.UUID
13
  ) -> WaterLogs:
14
- db_water_log = WaterLogs(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  user_id=user_id,
16
  amount_ml=water_log.amount_ml,
17
- logged_at=datetime.now(),
18
  goal_ml=water_log.goal_ml,
19
  recommended_ml=water_log.recommended_ml,
20
  )
21
- session.add(db_water_log)
22
- await session.commit() # Commit asynchronously
23
- await session.refresh(db_water_log) # Refresh asynchronously
24
- return db_water_log
25
 
26
 
27
  # Get all water logs for a user
 
1
  from sqlalchemy.ext.asyncio import AsyncSession
2
  from sqlalchemy.future import select
 
3
  from typing import List
4
  from .models import WaterLogs
5
  import uuid
6
  from .schemas import WaterLogCreate, WaterLogUpdate
7
+ from datetime import date, datetime
8
 
9
 
10
+ # Create or update today's water log
11
  async def create_water_log(
12
  session: AsyncSession, water_log: WaterLogCreate, user_id: uuid.UUID
13
  ) -> WaterLogs:
14
+
15
+
16
+ today = date.today()
17
+
18
+ # 1️⃣ Query today's existing log
19
+ stmt = select(WaterLogs).filter(
20
+ WaterLogs.user_id == user_id,
21
+ WaterLogs.logged_at >= datetime.combine(today, datetime.min.time()),
22
+ WaterLogs.logged_at <= datetime.combine(today, datetime.max.time()),
23
+ )
24
+ result = await session.execute(stmt)
25
+ existing_log = result.scalar_one_or_none()
26
+
27
+ # 2️⃣ If today's log exists → UPDATE it
28
+ if existing_log:
29
+ existing_log.amount_ml = water_log.amount_ml
30
+ existing_log.goal_ml = water_log.goal_ml
31
+ existing_log.recommended_ml = water_log.recommended_ml
32
+ await session.commit()
33
+ await session.refresh(existing_log)
34
+ return existing_log
35
+
36
+ # 3️⃣ No log for today → CREATE a new one
37
+ new_log = WaterLogs(
38
+ id=uuid.uuid4(),
39
  user_id=user_id,
40
  amount_ml=water_log.amount_ml,
41
+ logged_at=datetime.utcnow(),
42
  goal_ml=water_log.goal_ml,
43
  recommended_ml=water_log.recommended_ml,
44
  )
45
+ session.add(new_log)
46
+ await session.commit()
47
+ await session.refresh(new_log)
48
+ return new_log
49
 
50
 
51
  # Get all water logs for a user