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

1from datetime import datetime, timezone 

2from sqlalchemy import Column, ForeignKey, Integer, String, DateTime 

3from sqlalchemy.orm import relationship 

4from src.database import Base 

5 

6 

7class Link(Base): 

8 __tablename__ = "links" 

9 

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")