-
Notifications
You must be signed in to change notification settings - Fork 200
/
pathManager.go
37 lines (30 loc) · 1.37 KB
/
pathManager.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package factory
import (
"fmt"
"path/filepath"
"github.com/ElrondNetwork/elrond-go/common"
"github.com/ElrondNetwork/elrond-go/storage/pathmanager"
)
// ArgCreatePathManager is used to pass the strings to the path manager factory function
type ArgCreatePathManager struct {
WorkingDir string
ChainID string
}
// CreatePathManager crates a path manager from provided working directory and chain ID
func CreatePathManager(arg ArgCreatePathManager) (*pathmanager.PathManager, error) {
return CreatePathManagerFromSinglePathString(filepath.Join(arg.WorkingDir, common.DefaultDBPath, arg.ChainID))
}
// CreatePathManagerFromSinglePathString crates a path manager from provided path string
func CreatePathManagerFromSinglePathString(dbPathWithChainID string) (*pathmanager.PathManager, error) {
pathTemplateForPruningStorer := filepath.Join(
dbPathWithChainID,
fmt.Sprintf("%s_%s", common.DefaultEpochString, common.PathEpochPlaceholder),
fmt.Sprintf("%s_%s", common.DefaultShardString, common.PathShardPlaceholder),
common.PathIdentifierPlaceholder)
pathTemplateForStaticStorer := filepath.Join(
dbPathWithChainID,
common.DefaultStaticDbString,
fmt.Sprintf("%s_%s", common.DefaultShardString, common.PathShardPlaceholder),
common.PathIdentifierPlaceholder)
return pathmanager.NewPathManager(pathTemplateForPruningStorer, pathTemplateForStaticStorer, dbPathWithChainID)
}