"""Linkfire model.""" from db import db from enum import Enum class LinkfireAddType(Enum): AUTO_IMPORTED = 0 MANUALLY = 1 class LinkfireCampaign(db.Model): """LinkfireCampaign model""" __tablename__ = "LinkfireCampaign" __table_args__ = ( db.UniqueConstraint("linkfire_id", "campaign_id", name="uq_LinkfireCampaign_linkfire_id_campaign_id"), ) id = db.Column(db.BigInteger, primary_key=True) linkfire_id = db.Column(db.BigInteger, db.ForeignKey("Linkfire.id", ondelete="CASCADE"), nullable=False) campaign_id = db.Column(db.BigInteger, db.ForeignKey("Campaign.id", ondelete="CASCADE"), nullable=False) add_type = db.Column(db.BigInteger, nullable=False, server_default="1") campaign = db.relationship("Campaign", back_populates="linkfire_campaigns") linkfire_link = db.relationship("Linkfire", back_populates="linkfire_campaigns") def is_added_manually(self) -> bool: return self.add_type == LinkfireAddType.MANUALLY.value class LinkfireProject(db.Model): """LinkfireProject model""" __tablename__ = "LinkfireProject" __table_args__ = ( db.UniqueConstraint("linkfire_id", "project_id", name="uq_LinkfireProject_linkfire_id_project_id"), ) id = db.Column(db.BigInteger, primary_key=True) linkfire_id = db.Column(db.BigInteger, db.ForeignKey("Linkfire.id", ondelete="CASCADE"), nullable=False) project_id = db.Column(db.BigInteger, db.ForeignKey("Project.id", ondelete="CASCADE"), nullable=False) add_type = db.Column(db.BigInteger, nullable=False, server_default="1") project = db.relationship("Project", back_populates="linkfire_projects") linkfire_link = db.relationship("Linkfire", back_populates="linkfire_projects") def is_added_manually(self) -> bool: return self.add_type == LinkfireAddType.MANUALLY.value class Linkfire(db.Model): """Linkfire model""" __tablename__ = "Linkfire" id = db.Column(db.BigInteger, primary_key=True) link_id = db.Column(db.String, nullable=False) link_url = db.Column(db.String, nullable=False) linkfire_campaigns = db.relationship("LinkfireCampaign", back_populates="linkfire_link") linkfire_projects = db.relationship("LinkfireProject", back_populates="linkfire_link")