class Client(db.Model): __tablename__ = 'clients' id = db.Column(db.Integer, primary_key=True, autoincrement=True) email = db.Column(db.String, nullable=False, unique=True) publisher = db.Column(db.Boolean, nullable=False) subscriber = db.Column(db.Boolean, nullable=False)
class Topic(db.Model): __tablename__ = 'topics' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String, nullable=False, unique=True) def __init__(self, *args, **kwargs): self.messages = [] super().__init__(*args, **kwargs)
class Subscription(db.Model): __tablename__ = 'subscriptions' client_id = db.Column(db.ForeignKey('clients.id', ondelete='CASCADE', onupdate='CASCADE'), nullable=False, primary_key=True) topic_id = db.Column(db.ForeignKey('topics.id', ondelete='CASCADE', onupdate='CASCADE'), nullable=False, primary_key=True)
class ReadMessage(db.Model): __tablename__ = 'read_messages' client_id = db.Column(db.ForeignKey('clients.id', ondelete='CASCADE', onupdate='CASCADE'), nullable=False, primary_key=True) message_id = db.Column(db.ForeignKey('messages.id', ondelete='CASCADE', onupdate='CASCADE'), nullable=False, primary_key=True)
class Message(db.Model): __tablename__ = 'messages' id = db.Column(db.Integer, primary_key=True, autoincrement=True) topic_id = db.Column(db.ForeignKey('topics.id', ondelete='CASCADE', onupdate='CASCADE'), nullable=False) message = db.Column(db.String, nullable=False)