函数详情
工具函数
add-latest-chapter 与 uploader-get-rclone-conf,供自动化程序和上架客户端调用
本页面描述两个工具类 Edge Function,由自动化脚本或上架客户端调用,不面向终端用户。
add-latest-chapter
上传工具在完成章节图片上传后调用此函数,向数据库写入章节记录并更新漫画元数据。
| 属性 | 值 |
|---|---|
| 方法 | POST |
| JWT 校验 | 是 |
| 调用方 | 上传脚本 / 管理后台(service_role 或 admin/editor 用户) |
鉴权
函数支持两种身份:
- service_role:直接解码 JWT payload 判断
role === 'service_role',跳过 RPC 检查 - 普通用户 JWT:调用
is_admin_or_editor()RPC 验证权限,非 admin/editor 返回 403
请求参数
Prop
Type
处理流程
- 向
chapters表插入新记录(idx由数据库触发器自动递增) - 重复插入返回 409(唯一约束冲突,
code: 23505) - 更新
comics表的latest_chapter_title和latest_chapter_updated_at
响应
成功返回 201 + 新插入的章节完整记录。
此函数使用 OLD_SUPABASE_SERVICE_ROLE_KEY 执行写入操作,绕过 RLS。
uploader-get-rclone-conf
为上传客户端提供加密后的 Rclone 配置文件,用于将漫画图片上传至对象存储(Cloudflare R2)。
| 属性 | 值 |
|---|---|
| 方法 | POST |
| JWT 校验 | 是 |
| 调用方 | 上架客户端 |
鉴权
与 add-latest-chapter 相同,支持 service_role 直接通过或普通用户 is_admin_or_editor() RPC 验证。
处理流程
- 从环境变量
RCLONE_CONF_CONTENT(Base64 编码)解码出 Rclone 配置明文 - 使用
UPLOADER_AES_KEY(256-bit Hex)进行 AES-256-GCM 加密 - 返回
{ iv, ciphertext }(均为 Base64),客户端使用对称密钥解密后写入本地rclone.conf
响应
{
"iv": "Base64 编码的 12 字节随机 IV",
"ciphertext": "Base64 编码的 AES-GCM 密文(含 Auth Tag)"
}配置文件包含对象存储的访问凭证,传输过程必须加密。客户端需预置 UPLOADER_AES_KEY 用于解密。
Secrets 依赖
| Secret | 说明 |
|---|---|
RCLONE_CONF_CONTENT | Rclone 配置文件内容(Base64 编码) |
UPLOADER_AES_KEY | AES-256 密钥(64 字符 Hex) |
OLD_SUPABASE_SERVICE_ROLE_KEY | 两个函数共用,执行 Admin 操作 |