67 lines
1.4 KiB
Go
67 lines
1.4 KiB
Go
package filetree
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
// FileTree represents a set of files, directories, and their relations.
|
|
type FileTree struct {
|
|
Root *FileNode
|
|
Size int
|
|
FileSize uint64
|
|
Name string
|
|
Id uuid.UUID
|
|
}
|
|
|
|
// FileNode represents a single file, its relation to files beneath it, the tree it exists in, and the metadata of the given file.
|
|
type FileNode struct {
|
|
Tree *FileTree
|
|
Parent *FileNode
|
|
Name string
|
|
Data NodeData
|
|
Children map[string]*FileNode
|
|
path string
|
|
}
|
|
|
|
// NodeData is the payload for a FileNode
|
|
type NodeData struct {
|
|
ViewInfo ViewInfo
|
|
FileInfo FileInfo
|
|
DiffType DiffType
|
|
}
|
|
|
|
// ViewInfo contains UI specific detail for a specific FileNode
|
|
type ViewInfo struct {
|
|
Collapsed bool
|
|
Hidden bool
|
|
}
|
|
|
|
// FileInfo contains tar metadata for a specific FileNode
|
|
type FileInfo struct {
|
|
Path string
|
|
TypeFlag byte
|
|
Linkname string
|
|
hash uint64
|
|
Size int64
|
|
Mode os.FileMode
|
|
Uid int
|
|
Gid int
|
|
IsDir bool
|
|
}
|
|
|
|
// DiffType defines the comparison result between two FileNodes
|
|
type DiffType int
|
|
|
|
// EfficiencyData represents the storage and reference statistics for a given file tree path.
|
|
type EfficiencyData struct {
|
|
Path string
|
|
Nodes []*FileNode
|
|
CumulativeSize int64
|
|
minDiscoveredSize int64
|
|
}
|
|
|
|
// EfficiencySlice represents an ordered set of EfficiencyData data structures.
|
|
type EfficiencySlice []*EfficiencyData
|