feat: add delete file
This commit is contained in:
parent
24b356a984
commit
0d8992a5c3
@ -37,9 +37,9 @@ func (s *Service) HandleMkdir(
|
|||||||
) *httpserver.Response {
|
) *httpserver.Response {
|
||||||
params := req.Binded.(*MkdirParams)
|
params := req.Binded.(*MkdirParams)
|
||||||
path := params.Path
|
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 {
|
if err != nil {
|
||||||
logger.Error("makeDirectory %s: %v", path, err)
|
logger.Error("makeDirectory %s: %v", path, err)
|
||||||
return resp.InternalServerError("mkdir failed, " + err.Error())
|
return resp.InternalServerError("mkdir failed, " + err.Error())
|
||||||
@ -56,8 +56,8 @@ func (s *Service) HandleListDirectory(
|
|||||||
startFileName := req.QueryString("startFileName")
|
startFileName := req.QueryString("startFileName")
|
||||||
inclusive := req.QueryBool("inclusive")
|
inclusive := req.QueryBool("inclusive")
|
||||||
limit := req.QueryInt("limit")
|
limit := req.QueryInt("limit")
|
||||||
|
|
||||||
newPath := utils.NormalizePath(path)
|
newPath := utils.NormalizePath(path)
|
||||||
|
|
||||||
rawEntries, moreAvailable, err := s.FileSystemManager.ListDirectoryEntries(
|
rawEntries, moreAvailable, err := s.FileSystemManager.ListDirectoryEntries(
|
||||||
context.Background(),
|
context.Background(),
|
||||||
utils.FullPath(newPath),
|
utils.FullPath(newPath),
|
||||||
|
|||||||
11
api_file.go
11
api_file.go
@ -94,6 +94,17 @@ func (s *Service) HandleDeleteFile(
|
|||||||
req *httpserver.Request,
|
req *httpserver.Request,
|
||||||
resp *httpserver.Response,
|
resp *httpserver.Response,
|
||||||
) *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()
|
return resp.NoContent()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -169,6 +169,32 @@ func (f *FileSystemManager) DownloadFile(ctx context.Context, path utils.FullPat
|
|||||||
return content, entry, nil
|
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() {
|
func (f *FileSystemManager) Shutdown() {
|
||||||
if f.meta != nil {
|
if f.meta != nil {
|
||||||
f.meta.Shutdown()
|
f.meta.Shutdown()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user