Skip to content

Commit 2b2bcc4

Browse files
author
JojiiOfficial
committed
add remove and move group
1 parent ed6f928 commit 2b2bcc4

File tree

1 file changed

+40
-1
lines changed

1 file changed

+40
-1
lines changed

dmfs/fsNamespace.go

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@ package dmfs
22

33
import (
44
"context"
5+
"fmt"
56
"syscall"
67
"time"
78

9+
"github.com/DataManager-Go/libdatamanager"
810
"github.com/hanwen/go-fuse/v2/fs"
11+
"github.com/hanwen/go-fuse/v2/fuse"
912
)
1013

1114
type namespaceNode struct {
@@ -17,6 +20,8 @@ type namespaceNode struct {
1720

1821
var _ = (fs.NodeOnAdder)((*namespaceNode)(nil))
1922
var _ = (fs.NodeRmdirer)((*namespaceNode)(nil))
23+
var _ = (fs.NodeMkdirer)((*namespaceNode)(nil))
24+
var _ = (fs.NodeRenamer)((*namespaceNode)(nil))
2025

2126
func (nsNode *namespaceNode) OnAdd(ctx context.Context) {
2227
// Use a no_group folder for files
@@ -50,7 +55,41 @@ func (nsNode *namespaceNode) Rmdir(ctx context.Context, name string) syscall.Err
5055
case <-time.After(2 * time.Second):
5156
}
5257

53-
// TODO do delete request
58+
// Do http delete request
59+
_, err := data.libdm.DeleteAttribute(libdatamanager.GroupAttribute, nsNode.namespace, name)
60+
if err != nil {
61+
fmt.Println(err)
62+
return syscall.ENOENT
63+
}
64+
65+
return 0
66+
}
67+
68+
// On group renamed
69+
func (nsNode *namespaceNode) Rename(ctx context.Context, name string, newParent fs.InodeEmbedder, newName string, flags uint32) syscall.Errno {
70+
if name == "no_group" {
71+
// TODO add groups to files with no group
72+
return 0
73+
}
74+
75+
_, err := data.libdm.UpdateAttribute(libdatamanager.GroupAttribute, nsNode.namespace, name, newName)
76+
if err != nil {
77+
return syscall.ENOENT
78+
}
5479

5580
return 0
5681
}
82+
83+
// On group created
84+
func (nsNode *namespaceNode) Mkdir(ctx context.Context, name string, mode uint32, out *fuse.EntryOut) (*fs.Inode, syscall.Errno) {
85+
node := nsNode.NewInode(ctx, &groupInode{
86+
group: name,
87+
namespace: nsNode.namespace,
88+
}, fs.StableAttr{
89+
Mode: syscall.S_IFDIR,
90+
})
91+
92+
// TODO implement create group
93+
94+
return node, 0
95+
}

0 commit comments

Comments
 (0)