package vfs

import (
	"gitlink.org.cn/cloudream/jcs-pub/client/internal/db"
	"gitlink.org.cn/cloudream/jcs-pub/client/internal/downloader"
	"gitlink.org.cn/cloudream/jcs-pub/client/internal/mount/config"
	"gitlink.org.cn/cloudream/jcs-pub/client/internal/mount/fuse"
	"gitlink.org.cn/cloudream/jcs-pub/client/internal/mount/vfs/cache"
	"gitlink.org.cn/cloudream/jcs-pub/client/internal/uploader"
)

type Vfs struct {
	db     *db.DB
	config *config.Config
	cache  *cache.Cache
}

func NewVfs(cfg *config.Config, db *db.DB, uploader *uploader.Uploader, downloader *downloader.Downloader) *Vfs {
	return &Vfs{
		db:     db,
		config: cfg,
		cache:  cache.NewCache(cfg, db, uploader, downloader),
	}
}

func (v *Vfs) Start() {
	v.cache.Start()
}

func (v *Vfs) Stop() {
	v.cache.Stop()
}

func (v *Vfs) Root() fuse.FsDir {
	return newRoot(v)
}

func (v *Vfs) Stats() fuse.FsStats {
	return fuse.FsStats{}
}

func (v *Vfs) Dump() cache.CacheStatus {
	return v.cache.Dump()
}
