mirror of
https://github.com/samuelncui/yatm.git
synced 2026-01-04 20:24:02 +00:00
38 lines
773 B
Go
38 lines
773 B
Go
package apis
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
|
|
"github.com/samuelncui/yatm/entity"
|
|
"github.com/samuelncui/yatm/library"
|
|
)
|
|
|
|
func (api *API) FileGet(ctx context.Context, req *entity.FileGetRequest) (*entity.FileGetReply, error) {
|
|
libFile, err := api.lib.GetFile(ctx, req.Id)
|
|
if err != nil && !errors.Is(err, library.ErrFileNotFound) {
|
|
return nil, err
|
|
}
|
|
|
|
var file *entity.File
|
|
if libFile != nil {
|
|
file = convertFiles(libFile)[0]
|
|
}
|
|
|
|
positions, err := api.lib.GetPositionByFileID(ctx, req.Id)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
children, err := api.lib.ListWithSize(ctx, req.Id)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &entity.FileGetReply{
|
|
File: file,
|
|
Positions: convertPositions(positions...),
|
|
Children: convertFiles(children...),
|
|
}, nil
|
|
}
|