Skip to content

Commit

Permalink
add session with weather code
Browse files Browse the repository at this point in the history
  • Loading branch information
motty-mio2 committed Nov 18, 2023
1 parent cd42dbd commit 7c2e15e
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 7 deletions.
19 changes: 14 additions & 5 deletions src/kb_2315/backend/api/endpoints/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
from fastapi import APIRouter

from kb_2315 import notify
from kb_2315.backend.crud import crud_session
from kb_2315.backend.crud import crud_session, crud_user
from kb_2315.backend.models import User
from kb_2315.backend.schemas import schema_session
from kb_2315.config import conf

Expand All @@ -13,9 +14,17 @@

@router.get("/")
def create_session(device_id: int) -> schema_session.create_session:
session_id: UUID = crud_session.add_session(device_id=device_id)

notify.line.send_message(message=f"乾燥を開始しました\n{conf.host_url}/analyze/?session_id={session_id}\n\n靴を選んでください")
notify.line.shoe_select_carousel(session_id=session_id)
user: User = crud_user.search_user_by()[0]

session_id: UUID = crud_session.add_session(user=user, device_id=device_id)

notify.line.send_message(
message=f"乾燥を開始しました\n{conf.host_url}/analyze/?session_id={session_id}\n\n靴を選んでください",
send_to_id=user.line_channel_id,
)
notify.line.shoe_select_carousel(
session_id=session_id,
send_to_id=user.line_channel_id,
)

return schema_session.create_session(session_id=session_id)
6 changes: 4 additions & 2 deletions src/kb_2315/backend/crud/crud_session.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,19 @@

from sqlalchemy.orm import Query

from kb_2315.backend.models import Session
from kb_2315.backend.models import Session, User
from kb_2315.backend.weather import api as weather_api

from .base_crud import base_CRUD


class CRUD_Session(base_CRUD):
def add_session(self, device_id: int, shoe_id: int | None = None) -> UUID:
def add_session(self, user: User, device_id: int, shoe_id: int | None = None) -> UUID:
with self._Session() as session:
new_session = Session()
new_session.shoe_id = shoe_id
new_session.device_id = device_id
new_session.weather_code = weather_api.get_weather_code(user.ido_longitude, user.keido_latitude)

session.add(new_session)
session.commit()
Expand Down
15 changes: 15 additions & 0 deletions src/kb_2315/backend/weather/api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import requests


def get_weather_code(ido_longitude: float, keido_latitude: float) -> int:
url: str = (
f"https://api.open-meteo.com/v1/forecast?latitude={ido_longitude}&longitude={keido_latitude}"
"&timezone=Asia%2FTokyo&forecast_days&current=weather_code"
)

try:
r = requests.get(url).json()
return r.get("daily").get("weather_code")
except Exception:
# 困ったら曇り
return 2

0 comments on commit 7c2e15e

Please sign in to comment.