Skip to content

Commit 13d8b31

Browse files
committed
Allow forking w/o group flag
1 parent d356210 commit 13d8b31

2 files changed

Lines changed: 41 additions & 7 deletions

File tree

internal/cmd/db_create.go

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,37 @@ func CreateDatabase(name string) error {
7474
return err
7575
}
7676

77-
group, err := groupFromFlag(groups)
78-
if err != nil {
79-
return err
77+
var seed *turso.DBSeed
78+
var group turso.Group
79+
80+
isFromDB := checkIfFromDBFlag()
81+
if isFromDB {
82+
seed, err = parseDBSeedFlags(client, false)
83+
if err != nil {
84+
return err
85+
}
86+
87+
db, err := getDatabase(client, seed.Name)
88+
if err != nil {
89+
return err
90+
}
91+
92+
for _, g := range groups {
93+
if g.Name == db.Group {
94+
group = g
95+
}
96+
}
97+
98+
if groupFlag != "" && groupFlag != group.Name {
99+
return fmt.Errorf("group %s does not match group %s of the source database. Please fork within the same group", groupFlag, group.Name)
100+
}
101+
}
102+
103+
if !isFromDB {
104+
group, err = groupFromFlag(groups)
105+
if err != nil {
106+
return err
107+
}
80108
}
81109
groupName := group.Name
82110

@@ -85,10 +113,12 @@ func CreateDatabase(name string) error {
85113
return err
86114
}
87115

88-
isAWS := strings.HasPrefix(group.Primary, "aws-")
89-
seed, err := parseDBSeedFlags(client, isAWS)
90-
if err != nil {
91-
return err
116+
if !isFromDB {
117+
isAWS := strings.HasPrefix(group.Primary, "aws-")
118+
seed, err = parseDBSeedFlags(client, isAWS)
119+
if err != nil {
120+
return err
121+
}
92122
}
93123

94124
version := "latest"

internal/cmd/group_flag.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ func addFromDBFlag(cmd *cobra.Command) {
4949
cmd.Flags().StringVar(&timestampFlag, "timestamp", "", "Set a point in time in the past to copy data from the selected database. Must be used with the 'from-db' flag. Must be in RFC3339 format like '2023-09-29T10:16:13-03:00'")
5050
}
5151

52+
func checkIfFromDBFlag() bool {
53+
return fromDBFlag != ""
54+
}
55+
5256
func parseTimestampFlag() (*time.Time, error) {
5357
if timestampFlag == "" {
5458
return nil, nil

0 commit comments

Comments
 (0)