syntax = "proto3";

package file;
option go_package = "./pb";

// 文件上传的元数据信息
message UploadFileMetadataReq {
  string fileName = 1;
  int64 fileSize = 2;
  string fileType = 3; // avatar, chat, etc.
  string userId = 4;
  bytes fileData = 5; // 如果文件很小可以直接传，大文件建议API层直接传S3，RPC只传元数据
}

message UploadFileResp {
  string url = 1;
  string fileId = 2;
}

message GetFileUrlReq {
  string fileId = 1;
  string userId = 2; // 用于鉴权
}

message GetFileUrlResp {
  string url = 1; // 可能是带签名的临时 URL
}

service FileService {
  // 简单上传（适合小文件，或保存元数据）
  rpc Upload(UploadFileMetadataReq) returns (UploadFileResp);
  // 获取文件访问链接（处理私有文件的鉴权）
  rpc GetFileUrl(GetFileUrlReq) returns (GetFileUrlResp);
}
