emotion-chatbot / src /models.py
kootaeng2
Fix : Correct deployment permissions and application logic\
8b43096
# models.py
# db๊ด€๋ จํ•œ ๋ชจ๋ธ ์ฝ”๋“œ
# User, Diary ๋ชจ๋ธ์ •์˜
from . import db
from werkzeug.security import generate_password_hash, check_password_hash # ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‹ฑ(์•”ํ˜ธํ™”, *์ฒ˜๋ฆฌํ•ด์คŒ)
import uuid
class User(db.Model):
id = db.Column(db.String(36), primary_key=True, default =lambda :str(uuid.uuid4())) # UUID ํ˜•์‹์˜ ๊ณ ์œ  ID, ์œ ์ €๋Š” ๋ฌธ์ž์—ด๋กœ ๋„ฃ์„์ˆ˜ ์žˆ๋‹ค.
username = db.Column(db.String(80), unique=True, nullable=False) # ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„์€ ํฌ๊ท€ํ•˜๊ณ , ๊ณต๋ฐฑ์€ ์—†์Œ
password_hash = db.Column(db.String(128), nullable=False)
# User๊ฐ€ ์‚ญ์ œ๋˜๋ฉด, ๊ด€๋ จ๋œ ๋ชจ๋“  Diary๋„ ํ•จ๊ป˜ ์‚ญ์ œ๋˜๋„๋ก cascade ์˜ต์…˜ ์ถ”๊ฐ€
diaries = db.relationship('Diary', backref='author', lazy=True, cascade="all, delete-orphan")
# ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ•ด์‹ฑํ•˜์—ฌ ์ €์žฅ
def set_password(self, password):
self.password_hash = generate_password_hash(password)
# ํ•ด์‹œ๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ์ž…๋ ฅ๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋น„๊ต
def check_password(self, password):
return check_password_hash(self.password_hash, password)
# ์œ ์ € ํ˜ธ์ถœ๋ช… ํ™•์ธ
def __repr__(self):
return f"<User id={self.id} username='{self.username}'>"
class Diary(db.Model):
id = db.Column(db.String(36), primary_key=True, default =lambda :str(uuid.uuid4())) # UUID ํ˜•์‹์˜ ๊ณ ์œ  ID
user_id = db.Column(db.String(36), db.ForeignKey('user.id'), nullable=False) # ์ž‘์„ฑ์ž ID (User ๋ชจ๋ธ๊ณผ ์—ฐ๊ด€)
content = db.Column(db.Text, nullable=False) # ์ผ๊ธฐ ๋‚ด์šฉ
emotion = db.Column(db.String(20), nullable=False) # ๊ฐ์ • ๋ผ๋ฒจ
timestamp = db.Column(db.DateTime, server_default=db.func.now()) # ์ž‘์„ฑ ์‹œ๊ฐ„ (๊ธฐ๋ณธ๊ฐ’: ํ˜„์žฌ ์‹œ๊ฐ„)
user = db.relationship('User', backref=db.backref('diaries', lazy=True)) # User ๋ชจ๋ธ๊ณผ์˜ ๊ด€๊ณ„ ์„ค์ •