feat: add delete file
This commit is contained in:
parent
24b356a984
commit
0d8992a5c3
@ -37,9 +37,9 @@ func (s *Service) HandleMkdir(
|
||||
) *httpserver.Response {
|
||||
params := req.Binded.(*MkdirParams)
|
||||
path := params.Path
|
||||
fullPath := utils.FullPath(path)
|
||||
newPath := utils.NormalizePath(path)
|
||||
|
||||
err := s.FileSystemManager.MakeDirectory(req.Context(), fullPath)
|
||||
err := s.FileSystemManager.MakeDirectory(req.Context(), utils.FullPath(newPath))
|
||||
if err != nil {
|
||||
logger.Error("makeDirectory %s: %v", path, err)
|
||||
return resp.InternalServerError("mkdir failed, " + err.Error())
|
||||
@ -56,8 +56,8 @@ func (s *Service) HandleListDirectory(
|
||||
startFileName := req.QueryString("startFileName")
|
||||
inclusive := req.QueryBool("inclusive")
|
||||
limit := req.QueryInt("limit")
|
||||
|
||||
newPath := utils.NormalizePath(path)
|
||||
|
||||
rawEntries, moreAvailable, err := s.FileSystemManager.ListDirectoryEntries(
|
||||
context.Background(),
|
||||
utils.FullPath(newPath),
|
||||
|
||||
11
api_file.go
11
api_file.go
@ -94,6 +94,17 @@ func (s *Service) HandleDeleteFile(
|
||||
req *httpserver.Request,
|
||||
resp *httpserver.Response,
|
||||
) *httpserver.Response {
|
||||
params := req.Binded.(*DeleteParams)
|
||||
path := params.Path
|
||||
isDir := params.IsDir
|
||||
newPath := utils.NormalizePath(path)
|
||||
|
||||
err := s.FileSystemManager.DeleteFile(req.Context(), utils.FullPath(newPath), isDir)
|
||||
if err != nil {
|
||||
logger.Error("delete file %s: %v", path, err)
|
||||
return resp.InternalServerError("delete file failed, " + err.Error())
|
||||
}
|
||||
|
||||
return resp.NoContent()
|
||||
}
|
||||
|
||||
|
||||
@ -169,6 +169,32 @@ func (f *FileSystemManager) DownloadFile(ctx context.Context, path utils.FullPat
|
||||
return content, entry, nil
|
||||
}
|
||||
|
||||
func (f *FileSystemManager) DeleteFile(ctx context.Context, path utils.FullPath, isDir bool) error {
|
||||
f.Lock()
|
||||
defer f.Unlock()
|
||||
|
||||
if string(path) == "/" {
|
||||
return fmt.Errorf("cannot delete root")
|
||||
}
|
||||
|
||||
entry, err := f.FindEntry(ctx, path)
|
||||
if err != nil {
|
||||
return fmt.Errorf("find entry failed: %v", err)
|
||||
}
|
||||
|
||||
if !isDir {
|
||||
if err := f.storage.DeleteObject(entry.S3Key); err != nil {
|
||||
return fmt.Errorf("delete s3 object failed: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
if err := f.meta.DeleteEntry(ctx, path); err != nil {
|
||||
return fmt.Errorf("delete entry failed: %v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (f *FileSystemManager) Shutdown() {
|
||||
if f.meta != nil {
|
||||
f.meta.Shutdown()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user