mirror of https://github.com/stashapp/stash.git
72 lines
1.6 KiB
Go
72 lines
1.6 KiB
Go
package file
|
|
|
|
import (
|
|
"context"
|
|
"io/fs"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
// FolderID represents an ID of a folder.
|
|
type FolderID int32
|
|
|
|
// String converts the ID to a string.
|
|
func (i FolderID) String() string {
|
|
return strconv.Itoa(int(i))
|
|
}
|
|
|
|
// Folder represents a folder in the file system.
|
|
type Folder struct {
|
|
ID FolderID `json:"id"`
|
|
DirEntry
|
|
Path string `json:"path"`
|
|
ParentFolderID *FolderID `json:"parent_folder_id"`
|
|
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
func (f *Folder) Info(fs FS) (fs.FileInfo, error) {
|
|
return f.info(fs, f.Path)
|
|
}
|
|
|
|
// FolderGetter provides methods to find Folders.
|
|
type FolderGetter interface {
|
|
FindByPath(ctx context.Context, path string) (*Folder, error)
|
|
FindByZipFileID(ctx context.Context, zipFileID ID) ([]*Folder, error)
|
|
FindAllInPaths(ctx context.Context, p []string, limit, offset int) ([]*Folder, error)
|
|
FindByParentFolderID(ctx context.Context, parentFolderID FolderID) ([]*Folder, error)
|
|
}
|
|
|
|
type FolderCounter interface {
|
|
CountAllInPaths(ctx context.Context, p []string) (int, error)
|
|
}
|
|
|
|
// FolderCreator provides methods to create Folders.
|
|
type FolderCreator interface {
|
|
Create(ctx context.Context, f *Folder) error
|
|
}
|
|
|
|
// FolderUpdater provides methods to update Folders.
|
|
type FolderUpdater interface {
|
|
Update(ctx context.Context, f *Folder) error
|
|
}
|
|
|
|
type FolderDestroyer interface {
|
|
Destroy(ctx context.Context, id FolderID) error
|
|
}
|
|
|
|
type FolderGetterDestroyer interface {
|
|
FolderGetter
|
|
FolderDestroyer
|
|
}
|
|
|
|
// FolderStore provides methods to find, create and update Folders.
|
|
type FolderStore interface {
|
|
FolderGetter
|
|
FolderCounter
|
|
FolderCreator
|
|
FolderUpdater
|
|
FolderDestroyer
|
|
}
|