package fstree

import (
	"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/shard/mode"
	"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/util"
)

// Open implements common.Storage.
func (t *FSTree) Open(mode mode.ComponentMode) error {
	t.readOnly = mode.ReadOnly()
	t.metrics.SetMode(mode)
	return nil
}

// Init implements common.Storage.
func (t *FSTree) Init() error {
	if err := util.MkdirAllX(t.RootPath, t.Permissions); err != nil {
		return err
	}
	if !t.readOnly {
		f := newSpecificWriteData(t.fileCounter, t.RootPath, t.Permissions, t.noSync)
		if f != nil {
			t.writer = f
		}
	}

	return t.initFileCounter()
}

// Close implements common.Storage.
func (t *FSTree) Close() error {
	t.metrics.Close()
	return nil
}