-
Notifications
You must be signed in to change notification settings - Fork 378
/
migrationutils.go
49 lines (39 loc) · 992 Bytes
/
migrationutils.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
38
39
40
41
42
43
44
45
46
47
48
49
package migrationutils
import (
"fmt"
"os"
"path"
"go.uber.org/zap"
"berty.tech/berty/v2/go/pkg/errcode"
)
const (
dataVersionFileName = "data-version"
)
func GetDataVersion(dir string) (string, error) {
dataVersionPath := path.Join(dir, dataVersionFileName)
_, err := os.Stat(dataVersionPath)
if os.IsNotExist(err) {
return "0", nil
}
if err != nil {
return "", errcode.TODO.Wrap(err)
}
versionBytes, err := os.ReadFile(dataVersionPath)
if err != nil {
return "", errcode.TODO.Wrap(err)
}
return (string)(versionBytes), nil
}
func WriteDataVersion(dir, version string) error {
if err := os.MkdirAll(dir, 0o700); err != nil {
return err
}
return os.WriteFile(path.Join(dir, dataVersionFileName), []byte(version), 0o600)
}
func Move(from string, to string, label string, logger *zap.Logger) error {
if from == to {
return nil
}
logger.Info(fmt.Sprintf("moving %s", label), zap.String("from", from), zap.String("to", to))
return os.Rename(from, to)
}