feat: optimize file operation interface (#2757)

* feat: optimize file operation interface

* chore: fix typo

Co-authored-by: Noah Hsu <i@nn.ci>
This commit is contained in:
foxxorcat
2022-12-20 15:02:40 +08:00
committed by GitHub
parent e2bcca2fbd
commit 62a06fa0f9
13 changed files with 330 additions and 121 deletions

View File

@ -9,7 +9,7 @@ import (
type Driver interface {
Meta
Reader
Writer
//Writer
//Other
}
@ -42,19 +42,66 @@ type Getter interface {
GetRoot(ctx context.Context) (model.Obj, error)
}
type Writer interface {
// MakeDir make a folder named `dirName` in `parentDir`
//type Writer interface {
// Mkdir
// Move
// Rename
// Copy
// Remove
// Put
//}
type Mkdir interface {
MakeDir(ctx context.Context, parentDir model.Obj, dirName string) error
// Move `srcObject` to `dstDir`
}
type Move interface {
Move(ctx context.Context, srcObj, dstDir model.Obj) error
// Rename rename `srcObject` to `newName`
}
type Rename interface {
Rename(ctx context.Context, srcObj model.Obj, newName string) error
// Copy `srcObject` to `dstDir`
}
type Copy interface {
Copy(ctx context.Context, srcObj, dstDir model.Obj) error
// Remove remove `object`
}
type Remove interface {
Remove(ctx context.Context, obj model.Obj) error
// Put upload `stream` to `parentDir`
}
type Put interface {
Put(ctx context.Context, dstDir model.Obj, stream model.FileStreamer, up UpdateProgress) error
}
//type WriteResult interface {
// MkdirResult
// MoveResult
// RenameResult
// CopyResult
// PutResult
// Remove
//}
type MkdirResult interface {
MakeDir(ctx context.Context, parentDir model.Obj, dirName string) (model.Obj, error)
}
type MoveResult interface {
Move(ctx context.Context, srcObj, dstDir model.Obj) (model.Obj, error)
}
type RenameResult interface {
Rename(ctx context.Context, srcObj model.Obj, newName string) (model.Obj, error)
}
type CopyResult interface {
Copy(ctx context.Context, srcObj, dstDir model.Obj) (model.Obj, error)
}
type PutResult interface {
Put(ctx context.Context, dstDir model.Obj, stream model.FileStreamer, up UpdateProgress) (model.Obj, error)
}
type UpdateProgress func(percentage int)