make a media api, encapsulate the original S3 bucket address

there are 3 parts, from back to head, url inside the bucket -> url of backend media api -> backend domain, only the last part is spliced by frontend, the other two parts are spliced with sqlalchemy
This commit is contained in:
2026-05-20 17:31:49 +08:00
parent d2162f93e0
commit 61e3d71b72
4 changed files with 65 additions and 1 deletions
+13
View File
@@ -17,6 +17,19 @@ class User(Base, AutoID):
handle = Column(String, unique=True, index=True, nullable=True)
avatar = Column(String)
@property
def avatar_url(self) -> str | None:
if not self.avatar:
return None
# 如果是第三方(如未迁移成功时降级的 Google 原始链接),直接返回
if self.avatar.startswith(("http://", "https://")):
return self.avatar
path = self.avatar.lstrip("/")
return f"/v1/media/{path}"
# ---- 互动统计字段 ----
following_count = Column(Integer, default=0, nullable=False, server_default="0") # 关注了多少人
follower_count = Column(Integer, default=0, nullable=False, server_default="0") # 粉丝数