Files
LeDiscord/backend/models/notification.py
EvanChal f33dfd5ab7
Some checks failed
Deploy to Development / build-and-deploy (push) Failing after 46s
Deploy to Production / build-and-deploy (push) Successful in 1m47s
fix(notification+vlog upload)
2026-01-27 02:39:51 +01:00

43 lines
1.5 KiB
Python

from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, Boolean, Text, Enum as SQLEnum
from sqlalchemy.orm import relationship
from datetime import datetime
import enum
from config.database import Base
class NotificationType(enum.Enum):
EVENT_INVITATION = "event_invitation"
EVENT_REMINDER = "event_reminder"
POST_MENTION = "post_mention"
NEW_ALBUM = "new_album"
NEW_VLOG = "new_vlog"
SYSTEM = "system"
class Notification(Base):
__tablename__ = "notifications"
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
type = Column(SQLEnum(NotificationType), nullable=False)
title = Column(String, nullable=False)
message = Column(Text, nullable=False)
link = Column(String) # Link to the related content
is_read = Column(Boolean, default=False)
created_at = Column(DateTime, default=datetime.utcnow)
read_at = Column(DateTime, nullable=True)
# Relationships
user = relationship("User", back_populates="notifications")
class PushSubscription(Base):
__tablename__ = "push_subscriptions"
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
endpoint = Column(String, unique=True, nullable=False)
p256dh = Column(String, nullable=False)
auth = Column(String, nullable=False)
created_at = Column(DateTime, default=datetime.utcnow)
# Relationships
user = relationship("User", back_populates="push_subscriptions")