file_layout.go 1.18 KB
Newer Older
1
package db
2 3 4 5 6

import (
	"fmt"
	"os"
	"path/filepath"
7

8
	"github.com/ethereum-optimism/optimism/op-service/eth"
9 10
)

11
func prepLocalDerivedFromDBPath(chainID eth.ChainID, datadir string) (string, error) {
12 13 14 15 16 17 18
	dir, err := prepChainDir(chainID, datadir)
	if err != nil {
		return "", err
	}
	return filepath.Join(dir, "local_safe.db"), nil
}

19
func prepCrossDerivedFromDBPath(chainID eth.ChainID, datadir string) (string, error) {
20 21 22 23 24 25 26
	dir, err := prepChainDir(chainID, datadir)
	if err != nil {
		return "", err
	}
	return filepath.Join(dir, "cross_safe.db"), nil
}

27
func prepLogDBPath(chainID eth.ChainID, datadir string) (string, error) {
28 29 30 31 32 33 34
	dir, err := prepChainDir(chainID, datadir)
	if err != nil {
		return "", err
	}
	return filepath.Join(dir, "log.db"), nil
}

35
func prepChainDir(chainID eth.ChainID, datadir string) (string, error) {
36
	dir := filepath.Join(datadir, chainID.String())
37 38 39 40 41
	if err := os.MkdirAll(dir, 0755); err != nil {
		return "", fmt.Errorf("failed to create chain directory %v: %w", dir, err)
	}
	return dir, nil
}
42

43
func PrepDataDir(datadir string) error {
44 45 46 47 48
	if err := os.MkdirAll(datadir, 0755); err != nil {
		return fmt.Errorf("failed to create data directory %v: %w", datadir, err)
	}
	return nil
}