init: Initial commit

This commit is contained in:
Björn Benouarets
2026-01-08 10:10:12 +01:00
parent 7055272793
commit a1eca7baef
17 changed files with 392 additions and 111 deletions

19
models/channel.py Normal file
View File

@@ -0,0 +1,19 @@
from sqlalchemy import Column, String, DateTime, UUID, ForeignKey
from sqlalchemy.orm import relationship
from uuid import uuid4
from datetime import datetime
from models.base import Base
class Channel(Base):
__tablename__ = "channels"
id = Column(UUID, primary_key=True, default=uuid4)
name = Column(String)
microsoft_channel_id = Column(UUID, nullable=False, unique=True)
team_id = Column(UUID, ForeignKey("teams.id"), nullable=False)
created_at = Column(DateTime, default=datetime.now)
updated_at = Column(DateTime, default=datetime.now)
team = relationship("Team", back_populates="channels")
webhooks = relationship("Webhook", back_populates="channel", cascade="all, delete-orphan")

17
models/service.py Normal file
View File

@@ -0,0 +1,17 @@
from sqlalchemy import Column, String, DateTime, UUID, ForeignKey, Boolean
from sqlalchemy.orm import relationship
from uuid import uuid4
from datetime import datetime
from models.base import Base
class Service(Base):
__tablename__ = "services"
id = Column(UUID, primary_key=True, default=uuid4)
name = Column(String)
important = Column(Boolean, default=False)
created_at = Column(DateTime, default=datetime.now)
updated_at = Column(DateTime, default=datetime.now)
webhooks = relationship("Webhook", back_populates="service", cascade="all, delete-orphan")

View File

@@ -1,14 +1,17 @@
from sqlalchemy import Column, String, DateTime, UUID
from sqlalchemy import Column, String, DateTime, UUID
from sqlalchemy.orm import relationship
from uuid import uuid4
from datetime import datetime
from models.base import Base
class Team(Base):
__tablename__ = "teams"
id = Column(UUID, primary_key=True, default=uuid4)
name = Column(String)
microsoft_team_id = Column(UUID)
created_at = Column(DateTime)
updated_at = Column(DateTime)
webhooks = relationship("Webhook", back_populates="team", cascade="all, delete-orphan")
microsoft_team_id = Column(UUID, nullable=False, unique=True)
created_at = Column(DateTime, default=datetime.now)
updated_at = Column(DateTime, default=datetime.now)
channels = relationship("Channel", back_populates="team", cascade="all, delete-orphan")

View File

@@ -2,14 +2,18 @@ from sqlalchemy import Column, String, DateTime, UUID, ForeignKey
from sqlalchemy.orm import relationship
from uuid import uuid4
from datetime import datetime
from models.base import Base
class Webhook(Base):
__tablename__ = "webhooks"
id = Column(UUID, primary_key=True, default=uuid4)
url = Column(String)
secret = Column(String)
team_id = Column(UUID, ForeignKey("teams.id"), nullable=False)
created_at = Column(DateTime)
updated_at = Column(DateTime)
team = relationship("Team", back_populates="webhooks")
secret = Column(String, nullable=False, unique=True)
service_id = Column(UUID, ForeignKey("services.id"), nullable=False)
channel_id = Column(UUID, ForeignKey("channels.id"), nullable=False)
created_at = Column(DateTime, default=datetime.now)
updated_at = Column(DateTime, default=datetime.now)
channel = relationship("Channel", back_populates="webhooks")
service = relationship("Service", back_populates="webhooks")