secure media endpoints

This commit is contained in:
2026-05-17 21:48:40 +02:00
parent f1abf03b35
commit b2cf1c4698
3 changed files with 116 additions and 44 deletions
+37 -17
View File
@@ -14,50 +14,70 @@ from src.db.models.base import Base, BaseMixin, BaseVideoMixin
class MediaFile(Base, BaseMixin, BaseVideoMixin):
__tablename__ = 'media_file'
media_actor_files: Mapped[List["MediaActorFile"]] = relationship(back_populates="media_file")
"""
MediaFile represents video link.
"""
__tablename__ = "media_file"
media_actor_files: Mapped[List["MediaActorFile"]] = relationship(
back_populates="media_file"
)
def __repr__(self):
return f'MediaFile({self.id} {self.title} {self.title})'
return f"MediaFile({self.id} {self.title} {self.title})"
def __str__(self):
return f'{self.title}({self.id})'
return f"{self.title}({self.id})"
def update_title(self):
"""
Update title from url.
"""
class MediaActor(Base, BaseMixin):
__tablename__ = 'media_actor'
name = Column(String)
media_actor_files = relationship("MediaActorFile")
def __repr__(self) -> str:
return f'MediaActor({self.id} {self.name} {self.url})'
return f"MediaActor({self.id} {self.name} {self.url})"
def __str__(self) -> str:
return f'{self.url}({self.id})'
return f"{self.url}({self.id})"
class MediaActorFile(Base, BaseMixin):
__tablename__ = 'media_actor_file'
media_actor_id: Mapped[str] = mapped_column(ForeignKey("media_actor.id"), nullable=False)
__tablename__ = "media_actor_file"
media_actor_id: Mapped[str] = mapped_column(
ForeignKey("media_actor.id"), nullable=False
)
media_actor: Mapped[MediaActor] = relationship(back_populates="media_actor_files")
media_file_id: Mapped[str] = mapped_column(ForeignKey("media_file.id"), nullable=True)
media_file_id: Mapped[str] = mapped_column(
ForeignKey("media_file.id"), nullable=True
)
media_file: Mapped[MediaFile] = relationship(back_populates="media_actor_files")
def __repr__(self):
return f'MediaActorFile({self.id} {self.media_actor_id} {self.media_file_id})'
return f"MediaActorFile({self.id} {self.media_actor_id} {self.media_file_id})"
def __str__(self) -> str:
return f'{self.id} {self.media_actor_id} {self.media_file_id}'
return f"{self.id} {self.media_actor_id} {self.media_file_id}"
class MediaArticle(Base, BaseMixin):
__tablename__ = 'media_article'
__tablename__ = "media_article"
review: Mapped[bool]
title: Mapped[str]
url: Mapped[str] = mapped_column(unique=True)
class MediaVideo(Base, BaseMixin):
__tablename__ = 'media_video'
"""
MediaFile represents video link.
"""
__tablename__ = "media_video"
cloud_link: Mapped[str]
file_name: Mapped[str]
path: Mapped[str]
@@ -67,11 +87,11 @@ class MediaVideo(Base, BaseMixin):
should_download: Mapped[bool]
def __repr__(self):
return f'MediaFile({self.id} {self.title} {self.url})'
return f"MediaFile({self.id} {self.title} {self.url})"
def __str__(self):
if self.title is None:
return f'{self.url}({self.id})'
return f"{self.url}({self.id})"
else:
return f'{self.title}({self.id})'
+4 -2
View File
@@ -12,8 +12,10 @@ engine = create_engine(SQLALCHEMY_DATABASE_URL)
SessionLocal = sessionmaker(bind=engine)
def get_db() -> Generator:
def get_db() -> Generator[Session, None, None]:
""" """
with SessionLocal() as db:
yield db
SessionDep: type[Session] = Annotated[Session, Depends(get_db)]
SessionDep = Annotated[Session, Depends(get_db)]