Coverage for src / links / models.py: 100%
15 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-10 22:03 +0200
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-10 22:03 +0200
1from datetime import datetime, timezone
2from sqlalchemy import Column, ForeignKey, Integer, String, DateTime
3from sqlalchemy.orm import relationship
4from src.database import Base
7class Link(Base):
8 __tablename__ = "links"
10 id = Column(Integer, primary_key=True)
11 original_url = Column(String, nullable=False)
12 short_id = Column(String, nullable=False, unique=True, index=True)
13 custom_alias = Column(String, unique=True, index=True, nullable=True)
14 click_count = Column(Integer, nullable=False, default=0)
15 created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), nullable=False)
16 expire_at = Column(DateTime(timezone=True), nullable=True)
17 user_id = Column(Integer, ForeignKey("user.id"), nullable=True)
18 user = relationship("User", back_populates="links", lazy="selectin")