package nfs

import (
	"git.kmsign.ru/royalcat/tstor/src/host/vfs"
	"git.kmsign.ru/royalcat/tstor/src/log"
	zlog "github.com/rs/zerolog/log"
	nfs "github.com/willscott/go-nfs"
	nfshelper "github.com/willscott/go-nfs/helpers"
)

func NewNFSv3Handler(fs vfs.Filesystem) (nfs.Handler, error) {
	nfslog := zlog.Logger.With().Str("component", "nfs").Logger()
	nfs.SetLogger(log.NewNFSLog(nfslog))
	nfs.Log.SetLevel(nfs.InfoLevel)

	bfs := &billyFsWrapper{fs: fs, log: nfslog}
	handler := nfshelper.NewNullAuthHandler(bfs)

	cacheHelper := nfshelper.NewCachingHandler(handler, 1024*16)

	//  cacheHelper := NewCachingHandler(handler)

	return cacheHelper, nil
}