feat(handler): update GetFile and ListFiles handlers for new FileResponse fields

- GetFile uses new GetFileResponse instead of manual FileResponse construction

- ListFiles handler parses optional user_id query parameter

- Wire FolderStore into FileService in app.go, testenv, and file_test

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
dailz
2026-04-16 16:04:43 +08:00
parent 1d591efeba
commit 29525c3fa9
5 changed files with 37 additions and 31 deletions

View File

@@ -14,7 +14,8 @@ import (
)
type fileServiceProvider interface {
ListFiles(ctx context.Context, folderID *int64, page, pageSize int, search string) ([]model.FileResponse, int64, error)
ListFiles(ctx context.Context, folderID *int64, userID *int64, page, pageSize int, search string) ([]model.FileResponse, int64, error)
GetFileResponse(ctx context.Context, fileID int64) (*model.FileResponse, error)
GetFileMetadata(ctx context.Context, fileID int64) (*model.File, *model.FileBlob, error)
DownloadFile(ctx context.Context, fileID int64, rangeHeader string) (io.ReadCloser, *model.File, *model.FileBlob, int64, int64, error)
DeleteFile(ctx context.Context, fileID int64) error
@@ -50,9 +51,20 @@ func (h *FileHandler) ListFiles(c *gin.Context) {
folderID = &id
}
var userID *int64
if v := c.Query("user_id"); v != "" {
id, err := strconv.ParseInt(v, 10, 64)
if err != nil {
h.logger.Warn("invalid user_id", zap.String("user_id", v))
server.BadRequest(c, "invalid user_id")
return
}
userID = &id
}
search := c.Query("search")
files, total, err := h.svc.ListFiles(c.Request.Context(), folderID, page, pageSize, search)
files, total, err := h.svc.ListFiles(c.Request.Context(), folderID, userID, page, pageSize, search)
if err != nil {
h.logger.Error("failed to list files", zap.Error(err))
server.InternalError(c, err.Error())
@@ -75,23 +87,13 @@ func (h *FileHandler) GetFile(c *gin.Context) {
return
}
file, blob, err := h.svc.GetFileMetadata(c.Request.Context(), id)
resp, err := h.svc.GetFileResponse(c.Request.Context(), id)
if err != nil {
h.logger.Error("failed to get file", zap.Int64("id", id), zap.Error(err))
server.InternalError(c, err.Error())
return
}
resp := model.FileResponse{
ID: file.ID,
Name: file.Name,
FolderID: file.FolderID,
Size: blob.FileSize,
MimeType: blob.MimeType,
SHA256: file.BlobSHA256,
CreatedAt: file.CreatedAt,
UpdatedAt: file.UpdatedAt,
}
server.OK(c, resp)
}