Files
xiaoxia-saas/packages/ports/video_share_repository.py
T
xiaoxia 53fb25efcf
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (push) Successful in 2s
CI/CD Pipeline / Check push changed paths (push) Successful in 19s
CI/CD Pipeline / Build Staging API Image (push) Successful in 41s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 48s
CI/CD Pipeline / Integration Tests (push) Successful in 3m10s
CI/CD Pipeline / Validate - Python (mypy + alembic) (push) Successful in 3m17s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 3m30s
CI/CD Pipeline / Validate - Style (push) Successful in 4m17s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 59s
CI/CD Pipeline / Frontend Unit Tests (push) Failing after 5m33s
CI/CD Pipeline / Validate - Security (push) Successful in 7m12s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 2m38s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 3m13s
CI/CD Pipeline / Unit Tests (push) Successful in 10m11s
CI/CD Pipeline / Production Browser E2E (push) Has been skipped
CI/CD Pipeline / Staging E2E Tests (push) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (push) Failing after 26h14m3s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 26h24m21s
CI/CD Pipeline / Retag skipped Staging API Image (push) Failing after 26h19m47s
CI/CD Pipeline / PR Build Web Image (push) Failing after 26h23m44s
CI/CD Pipeline / PR Build API Image (push) Failing after 26h23m44s
CI/CD Pipeline / Deploy Production (push) Failing after 26h13m23s
CI/CD Pipeline / Build Production Web Image (push) Failing after 26h13m26s
CI/CD Pipeline / CI Gate (push) Failing after 26h13m25s
CI/CD Pipeline / Build Production API Image (push) Failing after 26h13m26s
CI/CD Pipeline / Canary Release to Production (push) Failing after 26h13m23s
CI/CD Pipeline / Retag skipped Staging Web Image (push) Failing after 26h19m46s
CI/CD Pipeline / Frontend Lint (push) Failing after 26h23m37s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 26h23m45s
CI/CD Pipeline / Retag skipped Staging Worker Image (push) Failing after 26h19m46s
fix(#1834): 批量修复 UP 系列静态分析警告(UP007/UP006/UP017/UP035) (#1928)
Co-authored-by: xiaoxia <dev@xiaoxiajianji.com>
Co-committed-by: xiaoxia <dev@xiaoxiajianji.com>
2026-09-15 12:59:17 +08:00

63 lines
1.7 KiB
Python
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""视频分享 Repository 端口."""
from __future__ import annotations
from abc import ABC, abstractmethod
from typing import Optional
from packages.domain.video_share import VideoShare
class VideoShareRepositoryPort(ABC):
"""视频分享 Repository 接口."""
@abstractmethod
def create(self, share: VideoShare) -> VideoShare:
"""创建分享记录."""
...
@abstractmethod
def get_by_token(self, token: str) -> Optional[VideoShare]:
"""通过分享token获取分享记录."""
...
@abstractmethod
def get_by_id(self, share_id: str, user_id: str) -> Optional[VideoShare]:
"""通过ID获取分享记录(带用户校验)."""
...
@abstractmethod
def list_by_video(self, video_id: str, user_id: str) -> list[VideoShare]:
"""列出某个视频的所有分享记录."""
...
@abstractmethod
def list_by_user(self, user_id: str, skip: int = 0, limit: int = 20) -> list[VideoShare]:
"""列出用户创建的所有分享记录."""
...
@abstractmethod
def count_by_user(self, user_id: str) -> int:
"""统计用户创建的分享数量."""
...
@abstractmethod
def update(self, share: VideoShare) -> VideoShare:
"""更新分享记录."""
...
@abstractmethod
def delete(self, share_id: str, user_id: str) -> bool:
"""删除分享记录(软删除:is_active=False)."""
...
@abstractmethod
def increment_view(self, share_id: str) -> None:
"""浏览次数+1."""
...
@abstractmethod
def increment_download(self, share_id: str) -> None:
"""下载次数+1."""
...