@@ -97,9 +97,36 @@ func CreateDatabase(name string) error {
9797 return err
9898 }
9999
100- group , err := groupFromFlag (groups )
101- if err != nil {
102- return err
100+ var seed * turso.DBSeed
101+ var group turso.Group
102+
103+ if fromDBFlag != "" {
104+ seed , err = parseDBSeedFlags (client , false , "" )
105+ if err != nil {
106+ return err
107+ }
108+
109+ db , err := getDatabase (client , seed .Name )
110+ if err != nil {
111+ return err
112+ }
113+
114+ for _ , g := range groups {
115+ if g .Name == db .Group {
116+ group = g
117+ }
118+ }
119+
120+ if groupFlag != "" && groupFlag != group .Name {
121+ return fmt .Errorf ("group %s does not match group %s of the source database. Please fork within the same group" , groupFlag , group .Name )
122+ }
123+ }
124+
125+ if fromDBFlag == "" {
126+ group , err = groupFromFlag (groups )
127+ if err != nil {
128+ return err
129+ }
103130 }
104131 groupName := group .Name
105132
@@ -108,15 +135,17 @@ func CreateDatabase(name string) error {
108135 return err
109136 }
110137
111- isAWS := strings .HasPrefix (group .Primary , "aws-" )
138+ if fromDBFlag == "" {
139+ isAWS := strings .HasPrefix (group .Primary , "aws-" )
112140
113- if err = validateEncryptionFlags (); err != nil {
114- return err
115- }
141+ if err = validateEncryptionFlags (); err != nil {
142+ return err
143+ }
116144
117- seed , err := parseDBSeedFlags (client , isAWS , remoteEncryptionCipherFlag )
118- if err != nil {
119- return err
145+ seed , err = parseDBSeedFlags (client , isAWS , remoteEncryptionCipherFlag )
146+ if err != nil {
147+ return err
148+ }
120149 }
121150
122151 version := "latest"
0 commit comments