-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatabase.py
More file actions
82 lines (65 loc) · 2.31 KB
/
Copy pathdatabase.py
File metadata and controls
82 lines (65 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, Session
from models import (
User, HealthAlert, UserHealthAlert, NewsHistory,
Base
)
# SQLite 데이터베이스 연결 URL
SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db"
# Engine 생성
engine = create_engine(
SQLALCHEMY_DATABASE_URL,
connect_args={"check_same_thread": False} # SQLite 전용 옵션
)
# 세션 클래스 생성
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
# DB 세션 의존성 주입 함수
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
# 🔹 사용자 관련 유틸 함수
def get_user_by_username(db: Session, username: str):
return db.query(User).filter(User.username == username).first()
def create_user(db: Session, user: User):
db.add(user)
db.commit()
db.refresh(user)
return user
# 🔹 사용자 건강 알림 관련 유틸 함수
def get_user_alerts(db: Session, user_id: int):
return db.query(UserHealthAlert).filter(UserHealthAlert.user_id == user_id).all()
def add_user_alert(db: Session, user_id: int, alert_id: int):
user_alert = UserHealthAlert(user_id=user_id, alert_id=alert_id)
db.add(user_alert)
db.commit()
db.refresh(user_alert)
return user_alert
def toggle_user_alert(db: Session, user_alert_id: int):
alert = db.query(UserHealthAlert).filter(UserHealthAlert.id == user_alert_id).first()
if alert:
alert.enabled = not alert.enabled
db.commit()
db.refresh(alert)
return alert
def get_enabled_alerts_by_time(db: Session, user_id: int, time: str):
return db.query(UserHealthAlert).join(HealthAlert).filter(
UserHealthAlert.user_id == user_id,
UserHealthAlert.enabled == True,
HealthAlert.time == time
).all()
# ✅ (선택) 뉴스 기록 관련 유틸 함수 추가도 가능
def save_news_history(db: Session, username: str, keyword: str, summary: str):
new_record = NewsHistory(
username=username,
keyword=keyword,
summary=summary
)
db.add(new_record)
db.commit()
db.refresh(new_record)
return new_record
def get_news_history(db: Session, username: str):
return db.query(NewsHistory).filter(NewsHistory.username == username).order_by(NewsHistory.date.desc()).all()