syntax = "v1"

info (
	title:   "文件服务"
	desc:    "处理文件上传与获取"
	author:  "Asadz"
	version: "v1"
)

type (
	// 上传请求参数（File文件流在Handler中通过 r.FormFile 获取）
	UploadReq {
		Type string `form:"type,options=avatar|chat|post|verification|dispute"` // 文件类型限制
	}
	// 上传响应
	UploadResp {
		Url string `json:"url"` // 返回 CDN 地址或访问地址
	}
	// 获取文件请求（用于私有文件或代理访问）
	GetFileReq {
		FileId string `form:"key"`
	}
)

@server (
	prefix:     /api/v1
	group:      file
	middleware: FileSizeLimit // 建议添加中间件限制文件大小
)
service file-api {
	@doc "文件上传接口"
	@handler Upload
	post /upload (UploadReq) returns (UploadResp)

	@doc "文件获取接口 (如果是私有文件，通过此接口获取或重定向)"
	@handler GetFile
	get /files (GetFileReq)
}

