notifier/orm/notification.py
Untone 01d7935cbd
Some checks failed
deploy / deploy (push) Failing after 1m6s
auth-check-middleware
2023-12-17 14:42:04 +03:00

41 lines
992 B
Python

from enum import Enum as Enumeration
import time
from sqlalchemy import Column, Enum, Integer, ForeignKey, JSON as JSONType
from sqlalchemy.orm import relationship
from orm.author import Author
from services.db import Base
class NotificationEntity(Enumeration):
REACTION = 1
SHOUT = 2
FOLLOWER = 3
class NotificationAction(Enumeration):
CREATE = 1
UPDATE = 2
DELETE = 3
SEEN = 4
FOLLOW = 5
UNFOLLOW = 6
class NotificationSeen(Base):
__tablename__ = "notification_seen"
viewer = Column(ForeignKey("author.id"))
notification = Column(ForeignKey("notification.id"))
class Notification(Base):
__tablename__ = "notification"
created_at = Column(Integer, default=lambda: int(time.time()))
entity = Column(Enum(NotificationEntity), nullable=False)
action = Column(Enum(NotificationAction), nullable=False)
payload = Column(JSONType, nullable=True)
seen = relationship(lambda: Author, secondary="notification_seen")