tstor/src/delivery/graphql/model/entry.go
2025-01-08 00:50:31 +03:00

53 lines
933 B
Go

package model
import (
"context"
"git.kmsign.ru/royalcat/tstor/src/vfs"
)
type FsElem interface {
Name() string
IsDir() bool
}
func FillFsEntry(ctx context.Context, e FsElem, fs vfs.Filesystem, path string) (FsEntry, error) {
switch e.(type) {
case *vfs.ArchiveFS:
e := e.(*vfs.ArchiveFS)
return ArchiveFs{
Name: e.Name(),
Size: e.Size(),
FS: e,
}, nil
case *vfs.ResolverFS:
e := e.(*vfs.ResolverFS)
return ResolverFs{
Name: e.Name(),
FS: e,
}, nil
// case *torrent.TorrentFS:
// e := e.(*torrent.TorrentFS)
// torrent, err := MapTorrent(ctx, e.Torrent)
// if err != nil {
// return nil, err
// }
// return TorrentFs{
// Name: e.Name(),
// Torrent: torrent,
// FS: e,
// }, nil
default:
if e.IsDir() {
return SimpleDir{
Name: e.Name(),
FS: fs,
Path: path,
}, nil
} else {
return SimpleFile{
Name: e.Name(),
}, nil
}
}
}